пусть у нас есть код :
byte[] byteArray = new byte[255];
for(int i=-127; i<128; i++) byteArray[i + 127] = (byte)i;
String tempString = new String(byteArray,"Cp1251");
byteArray = tempString.getBytes("Cp1251");
for(int i=-127; i<128; i++) System.out.println(byteArray[i + 127]);
—————————————————————————————-
Выполнив сей код, мы увидим, что байт -104, после трансфорции (byte[] -> String ->byte[]), странным образом изменился на 63
Как это понимать ?
28 февраля 2010 в 17:02
Символ -104, т.е. 152 (0×98), в кодировке cp1251 отсутствует. См. таблицу этой кодировки.
28 февраля 2010 в 17:02
Точно! Спасибо! Многое объясняет.
28 февраля 2010 в 17:01
а что значит "корректной строкой в кодировке" ?
и почему заменился лишь только один байт ?
28 февраля 2010 в 17:00
Понимать так, что исходный массив не был корректной строкой в кодировке cp1251, и байт 104 заменился на символ вопроса, означающий "неизвестный символ" (с кодом 63)