singlepost

Кодировки [Java] << На главную или назад  

пусть у нас есть код :

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

Как это понимать ?

6 ответов в теме “Кодировки [Java]”

  1. 4
    Жека Кирпичев ответил:

    Символ -104, т.е. 152 (0×98), в кодировке cp1251 отсутствует. См. таблицу этой кодировки.

  2. 3
    Подмогаев Свят ответил:

    Точно! Спасибо! Многое объясняет.

  3. 2
    Подмогаев Свят ответил:

    а что значит "корректной строкой в кодировке" ?
    и почему заменился лишь только один байт ?

  4. 1
    Жека Кирпичев ответил:

    Понимать так, что исходный массив не был корректной строкой в кодировке cp1251, и байт 104 заменился на символ вопроса, означающий "неизвестный символ" (с кодом 63)

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.