TCP получает расширенные символы ASCII или utf-8 - PullRequest
0 голосов
/ 08 февраля 2011

Для перевернутого знака вопроса ¿ Я получаю два байта [-62] [- 65], но как получить кодировку UTF-8 или ASCII для чтения?

Ответы [ 3 ]

3 голосов
/ 08 февраля 2011

То, что - это код UTF8 для этого символа. перевернутый вопросительный знак - это кодовая точка Unicode 191, которая в UTF8 равна 0xc2:0xbf.

Вы видите их как подписанные байты. Например, -62 без знака 256-62 или 194 без знака - это шестнадцатеричное значение 0xc2.

Аналогично, -65 подписано - 256-65 или 191 без знака - это шестнадцатеричное 0xbf.

Если вы хотите преобразовать вашу последовательность UTF8 в кодовую точку, вы можете использовать таблицу ниже.

    Range              Encoding  Binary value
    -----------------  --------  --------------------------
    U+000000-U+00007f  0xxxxxxx  0xxxxxxx

    U+000080-U+0007ff  110yyyxx  00000yyy xxxxxxxx
                       10xxxxxx

    U+000800-U+00ffff  1110yyyy  yyyyyyyy xxxxxxxx
                       10yyyyxx
                       10xxxxxx

    U+010000-U+10ffff  11110zzz  000zzzzz yyyyyyyy xxxxxxxx
                       10zzyyyy
                       10yyyyxx
                       10xxxxxx

Например, ваш 0xc2:0xbf является двоичным 11000010 10111111, что соответствует второму случаю:

      11000010 10111111
         |||||   ||||||
         |||\\  //////
         ||| ||||||||
    00000000 10111111  ->  0x00bf  ->  191
1 голос
/ 08 февраля 2011

Посмотрите значения байтов в шестнадцатеричном формате:

  • -62 - это 0xc2
  • -65 - это 0xbf

Если вы посмотрите информацию Unicode для рассматриваемого глифа, вы увидите, что это два встроенных байта, составляющих кодировку UTF-8 инвертированного глифа вопросительного знака. 1011 *

1 голос
/ 08 февраля 2011

Эти 2 байта, вероятно, - это UTF-8

Для ASCII вам потребуется определенная кодовая страница.

А что такое «читаемая» кодировка символов?

...