Почему я не могу преобразовать эти шестнадцатеричные числа в utf-8? - PullRequest
0 голосов
/ 10 июня 2019

Шестнадцатеричные числа: 0xe0 0x3e 0x38 0x2e 0x7e 0x63 0x78 0x66

HEX: e0 => DEC: 224

HEX: 3e => DEC: 62

и т. Д. .

Если я преобразую каждый из этих шестнадцатеричных значений в десятичное и найду десятичное в «таблице Юникод».Я получаю первые два шестнадцатеричных числа равными:

E0 = символ Unicode: 'à' и 3E = символ Unicode: '>'

Это хорошо, так почему же этот онлайн-декодер не может преобразовать шестнадцатеричные числа, когда я могу сделать это вручную !?

https://onlineutf8tools.com/convert-hexadecimal-to-utf8

hex-to-utf8 conversion error

Ответы [ 2 ]

1 голос
/ 10 июня 2019

Эти байты не представляют кодировку UTF-8. 0xE0 в кодировке UTF-8 должны сопровождаться двумя байтами с установленным битом 7 и битом 6 (10xxxxxx 2 ). 0x3e недопустимо, поэтому ваше сообщение об ошибке «недопустимый байт продолжения».

Многобайтовая последовательность 0xC3 0xA0 представляет à в UTF-8. Вместо этого попробуйте следующее:

0xc3 0xa0 0x3e 0x38 0x2e 0x7e 0x63 0x78 0x66

Рекомендуемое чтение: https://en.wikipedia.org/wiki/UTF-8

0 голосов
/ 11 июня 2019

Показанная вами шестнадцатеричная последовательность не является допустимой UTF-8, на самом деле она ISO-8859-1 (Latin-1) или Windows-1252 вместо.

В обоих этих кодировках шестнадцатеричная последовательность 0xe0 0x3e 0x38 0x2e 0x7e 0x63 0x78 0x66 представляет одну и ту же последовательность символов à>8.~cxf

...