我正在阅读java.lang.String的源代码,特别是getBytes():
public byte[] getBytes(Charset charset) {
if (charset == null) throw new NullPointerException();
return StringCoding.encode(charset, value, offset, count);
}
但是,我在Java API中找不到StringCoding.encode()方法。我希望能够将它与java.nio.charset.CharsetEncoder.encode()进行比较,因为该类/方法在String.getBytes()javadoc中被引用为替代方法。如何找到StringCoding类及其源代码?.encode()方法之间的区别是什么?
区别在于使用aCharsetEncoder
可以选择失败的方式。这是CodingErrorAction
班。
默认情况下,String
的.getBytes()
用途REPLACE
。CharsetEncoder
但是,大多数用途都会被REPORT
滥用。
您可以CodingErrorAction
在此页面的末尾看到用法示例。
这样的REPORT
用法示例之一在java.nio.file中。至少在Unix系统上,从a创建的路径String
名将在写入磁盘之前进行编码。如果编码失败(例如,您使用ö
系统字符集US-ASCII),则JDK将拒绝创建文件,并且会向您打招呼(未选中!)InvalidPathException
。
这与File
创建谁知道文件名以及创建它的另一个原因不同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句