# “\u0131”是“ı”。 如何将所有 unicode 字符转换-6ren">
gpt4 book ai didi

ruby - 转换已经用 UTF-8 编码的 ruby​​ 字符串中的 unicode 字符

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:44 25 4
gpt4 key购买 nike

我有一个以 UTF-8 编码的字符串值。但它们也可能包含 unicode 字符。

例如;

"\u0131".encoding
=> #<Encoding:UTF-8>

“\u0131”是“ı”。

如何将所有 unicode 字符转换为 utf-8?

谢谢

恰格达斯

最佳答案

在内部,在此字符串中,所有 unicode 字符都已表示为 utf-8 字节。让我们检查一下。

> "\u0131".bytes.to_a
=> [196, 177]

好的,有两个字节,但它们是 UTF-8 还是 UTF-16 字节?最简单的检查方法是查看二进制表示。让我们迭代每个字节并以二进制基数打印它们:

>> "\u0131".each_byte {|b| print b.to_s(2)};puts
1100010010110001
=> nil

这是您的字符串的二进制表示 — 如您所见,这是 char 100110001 的正确 UTF-8 双字节序列,即 0x0131:

110 00100 10 110001
--- -- ← UTF-8 markers for 2-byte char
===== ====== ← bits of your char

所以答案是——什么都不做。该字符串已经是 utf-8,Q.E.D.

关于ruby - 转换已经用 UTF-8 编码的 ruby​​ 字符串中的 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14642291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com