Почему в GB18030 неправильно сформировано 1, а не 2?JAVA

Программисты JAVA общаются здесь
Anonymous
Почему в GB18030 неправильно сформировано 1, а не 2?

Сообщение Anonymous »

В кодировке Java GB18030 декодируйте этот код

Код: Выделить всё

// Either 2 or 4 byte sequence follows
if ( sl - sp < 2 )
return CoderResult.UNDERFLOW;
byte2 = sa[sp + 1] & 0xFF;
inputSize = 2;

if (byte2 < 0x30)
return CoderResult.malformedForLength(1);
Эта позиция кода находится в GB18030.Decode#decodeArrayLoop, поэтому, когда отображаемый символ представляет собой двухбайтовый или четырехбайтовый код, я не знаю, почему второй байт (а именно byte2), если он имеет неверный формат, выдаст некорректное исключение с 1, а не с 2.
Может быть, следует выдать исключение с 2?

Подробнее здесь: https://stackoverflow.com/questions/784 ... in-gb18030

Вернуться в «JAVA»