使用UTF-8编码创建String时存在不一致.
运行此代码:
public static void encodingIssue() throws IOException {
byte[] array = new byte[3];
array[0] = (byte) -19;
array[1] = (byte) -69;
array[2] = (byte) -100;
String str = new String(array, "UTF-8");
for (char c : str.toCharArray()) {
System.out.println((int) c);
}
}
Run Code Online (Sandbox Code Playgroud)
在Java 1.8.0_20(及更早版本)上,我们得到了结果
65533Run Code Online (Sandbox Code Playgroud)
在Java 1.7和1.6上,我们得到了正确的结果:
57052Run Code Online (Sandbox Code Playgroud)
你遇到过这个错误吗?这有解决方法吗?
这种不一致也表现为Shift_JIS,JIS_X0212-1990,x-IBM300,x-IBM834,x-IBM942,x-IBM942C,x-JIS0208,但显然UTF-8更为紧迫.