- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读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() 方法之间有什么区别?
最佳答案
不同之处在于,使用 CharsetEncoder
您可以选择失败的方式;这是CodingErrorAction
类。
默认情况下,String
的 .getBytes()
使用 REPLACE
。然而,大多数使用 CharsetEncoder
的情况都会REPORT
。
您可以在 this page 末尾看到 CodingErrorAction
使用示例.
REPORT
用法的一个此类示例位于 java.nio.file 中。至少在 Unix 系统上,从 String
创建的路径名将在写入磁盘之前进行编码;如果编码失败(例如,您使用 ö
和系统字符集 US-ASCII),JDK 将拒绝创建该文件,并且您将收到一个(未选中!)InvalidPathException
.
这与 File
不同,后者会创建谁知道文件名,这也是放弃它的另一个原因......
关于java - java.lang.String.getBytes() 和 java.nio.charset.CharsetEncoder.encode() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23739945/
CharsetEncoder 获取字符序列并对其进行编码,将其转换为字节序列。 我正在努力创建一个在 Java 中使用的字符集,但在理解以下内容的意图时遇到了一些困难。 来自 java.nio.cha
我正在阅读java.lang.String的源代码,具体来说getBytes() : public byte[] getBytes(Charset charset) { if (c
我是一名优秀的程序员,十分优秀!