San*_*yan 3 java character-encoding
日本字符的长度,不同于美国字符的长度。
例子:
String str = new String("????");
int numBytes = str.getBytes().length; 12
for Us:
String str = new String("san");
int numBytes = str.getBytes().length; 3
Run Code Online (Sandbox Code Playgroud)
我应该如何获得与美国字符完全相同的 JAPAN 字节长度。
对于单个 JAPAN 字符,为什么它给出 2 个字节,有时它为单个 JAPAN 字符给出 3 个字节。
请告诉我如何在java中获取JAPAN字符的字节值
什么getBytes叫不带参数的回报将取决于您的系统。从该文档:
使用平台的默认字符集将此 String 编码为字节序列,并将结果存储到新的字节数组中。
因此,例如,如果您系统的默认编码是 UTF-8,则编码一个日语字符可能需要四个字节,但编码一个美国英语字母字符通常只需要一个字节。Unicode 常见问题解答中的更多信息。
有一些重载getBytes可让您指定要使用的编码。
更多背景:
Java 的字符串使用 UTF-16 表示(这就是为什么 Java 可以使用整个 Unicode 即使char只有 16 位宽)。在 UTF-16 中,char可能需要多个s 来表示一个“字符”(在 Unicode 的说法中,可能需要多个代码单元来表示一个代码点)。如果要访问字符串中的代码点数,可以使用codePointCount; 要访问代码点,您可以使用codePoints流。String还有其他一些与代码点相关的方法,只需在 JavaDoc 中搜索“代码点”即可。
所有与 相关的String,特别是;转换为字节数组后,您可能会使用 UTF-16 以外的编码。
| 归档时间: |
|
| 查看次数: |
2986 次 |
| 最近记录: |