小编Ste*_*zan的帖子

Java 8 UTF-8编码问题(java bug?)

使用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(及更早版本)上,我们得到了结果

 65533
Run Code Online (Sandbox Code Playgroud)

在Java 1.7和1.6上,我们得到了正确的结果:

 57052
Run Code Online (Sandbox Code Playgroud)

你遇到过这个错误吗?这有解决方法吗?

这种不一致也表现为Shift_JIS,JIS_X0212-1990,x-IBM300,x-IBM834,x-IBM942,x-IBM942C,x-JIS0208,但显然UTF-8更为紧迫.

java encoding utf-8 java-8

18
推荐指数
2
解决办法
4699
查看次数

标签 统计

encoding ×1

java ×1

java-8 ×1

utf-8 ×1