【发布时间】:2021-11-01 07:28:20
【问题描述】:
所以我试图确保我正确理解编码,所以我编写了一个示例测试:
public class TestEncoding {
public static void main(String[] args) throws UnsupportedEncodingException {
TestEncoding testEncoding = new TestEncoding();
testEncoding.isLengthDifferenceBetweenUTF16UTF32();
}
private void isLengthDifferenceBetweenUTF16UTF32() throws UnsupportedEncodingException {
String eightBitString = new String("Hi how are you?ࢤ".getBytes(StandardCharsets.UTF_8));
String sixteenBitString = new String("Hi how are you?ࢤ".getBytes(StandardCharsets.UTF_16LE));
String thirtyTwoBitString= new String("Hi how are you?ࢤ".getBytes("UTF-32"));
System.err.println("8 bit: " + eightBitString.length());
System.err.println("16 bit: " + sixteenBitString.length());
System.err.println("32 bit: " + thirtyTwoBitString.length());
}
}
然后我得到输出:
8 bit: 16
16 bit: 32
32 bit: 64
我的问题是为什么Hi how are you?末尾的特殊字符ࢤ不变成15,对于Hi how are you?+特殊字符3,总共给我18。
【问题讨论】:
-
请添加正确的编程语言标签。
标签: java unicode encoding utf-8