解释一下这些转义数字在 ruby​​ 1.8.7 中的 unicode 编码中意味着什么

发布于 2025-01-03 07:32:57 字数 517 浏览 1 评论 0原文

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 文档

你|整数| UTF-8 字符作为无符号整数

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

0186 is the unicode "code". Where do 198 and 134 come from? How can go the other way around, from these byte codes to unicode strings?

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

Another confusing thing is unpack. Another seemingly arbitrary number. Where does that come from? Is it even correct? From the 1.8.7 String#unpack documentation:

U | Integer | UTF-8 characters as unsigned integers

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无敌元气妹 2025-01-10 07:32:57

您可以在这里找到答案 Unicode 字符 '拉丁大写字母 OPEN O' (U +0186)

  • 请注意 186(十六进制)=== 390(十进制)
  • C/C++/Java 源代码:“\u0186”
  • UTF-32(十进制):390
  • UTF-8(十六进制):0xC6 0x86(即 198 134)

您可以在维基百科的文章 UTF-8

  • UTF-8(UCS 转换格式 — 8 位[1])是一种可变宽度编码,可以表示 Unicode 字符集中的每个字符。它旨在向后兼容 ASCII,并避免 UTF-16 和 UTF-32 中的字节序和字节顺序标记的复杂性。

You can find your answers here Unicode Character 'LATIN CAPITAL LETTER OPEN O' (U+0186):

  • Note that 186 (hexadecimal) === 390 (decimal)
  • C/C++/Java source code : "\u0186"
  • UTF-32 (decimal) : 390
  • UTF-8 (hex) : 0xC6 0x86 (i.e. 198 134)

You can read more about UTF-8 encoding on Wikipedia's article on UTF-8.

  • UTF-8 (UCS Transformation Format — 8-bit[1]) is a variable-width encoding that can represent every character in the Unicode character set. It was designed for backward compatibility with ASCII and to avoid the complications of endianness and byte order marks in UTF-16 and UTF-32.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文