我正在尝试计算日语字符串的长度'汉字仮名交じり文':
String testStr = "????????";
try {
System.out.println("Length : " + testStr.getBytes("UTF-16").length);
}
catch(Exception ex) {
.....
}
Run Code Online (Sandbox Code Playgroud)
字符串中有8个字符,这个摘录打印:18.为什么它是18?
小智 7
它是18,因为你有8个字符,每个字符编码为UTF-16,这意味着每个2字节.因此,这是8*2 = 16加上在字节数组的开头插入的2字节BOM!
这是你的字节序列(feff是所谓的BOM或字节顺序标记,它允许检测字节序列是使用小端或大端字节顺序):
fe ff 6f 22 5b 57 4e ee 54 0d 4e a4 30 58 30 8a 65 87
Run Code Online (Sandbox Code Playgroud)
这就是我打印字节序列的方式(粗略的代码只用于测试这个当然):
final String text = "????????";
byte[] bytes = text.getBytes("UTF-16");
for (int i=0; i<bytes.length; ++i) {
System.out.printf("%02x ", bytes[i]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3928 次 |
| 最近记录: |