При создании строки с кодировкой UTF-8 существует несогласованность.
Запустите этот код:
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);
}
}
В Java 1.8.0_20 (и более ранних версиях) мы имеем результат
65533
В Java 1.7 и 1.6 мы получаем правильный результат:
57052
Вы столкнулись с этой ошибкой? Есть ли обходной путь для этого?
Эта несогласованность проявляется также для Shift_JIS, JIS_X0212-1990, x-IBM300, x-IBM834, x-IBM942, x-IBM942C, x-JIS0208, но, очевидно, UTF-8 является более актуальным.