Объясните, что означают эти экранированные числа в кодировке Unicode в ruby ​​1.8.7 - PullRequest
1 голос
/ 07 февраля 2012

0186 - это код Unicode.Откуда берутся 198 и 134?Как может быть наоборот, от этих байтовых кодов до строк Unicode?

>> c = JSON '["\\u0186"]'
[
    [0] "Ɔ"
]
>> c[0][0]
198
>> c[0][1]
134
>> c[0][2]
nil

Еще одна запутанная вещь - распаковка.Еще один, казалось бы, произвольный номер.Откуда это?Это даже правильно?Из документации 1.8.7 String # распаковать :

U |Целое число |UTF-8 символов в виде целых чисел без знака

>> c[0].unpack('U')
[
    [0] 390
]
>

1 Ответ

3 голосов
/ 07 февраля 2012

Здесь вы можете найти ответы на свои вопросы Символ Unicode 'LATIN CAPITAL LETTER OPEN O' (U + 0186) :

  • Обратите внимание, что 186 (шестнадцатеричное) === 390 (десятичное число)
  • Исходный код C / C ++ / Java: "\ u0186"
  • UTF-32 (десятичное число): 390
  • UTF-8 (шестнадцатеричное): 0xC6 0x86 (то есть 198 134)

Подробнее о кодировке UTF-8 можно прочитать в статье Википедии о UTF-8 .

  • UTF-8 (UCSФормат преобразования - 8-битный [1]) - кодировка с переменной шириной, которая может представлять каждый символ в наборе символов Unicode.Он был разработан для обратной совместимости с ASCII и во избежание осложнений порядка байтов и порядка следования байтов в UTF-16 и UTF-32.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...