在ruby 1.8.7中解释那些转义数字在unicode编码中意味着什么

时间:2012-02-07 06:29:00

标签: ruby unicode

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#unpack documentation

U |整数| UTF-8字符为无符号整数

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

1 个答案:

答案 0 :(得分:3)

您可以在Unicode Character '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 Transformation Format - 8-bit [1])是一种可变宽度编码,可以表示Unicode字符集中的每个字符。它旨在向后兼容ASCII并避免UTF-16和UTF-32中字节顺序和字节顺序标记的复杂化。