Çağ*_*daş 1 ruby string unicode encoding utf-8
我有一个以UTF-8编码的字符串值.但它们也可能包含unicode字符.
对于前
"\u0131".encoding
=> #<Encoding:UTF-8>
Run Code Online (Sandbox Code Playgroud)
"\ u0131"是"ı".
我如何将所有unicode字符转换为utf-8?
谢谢
Çağdaş
在内部,在此字符串中,所有unicode字符都已表示为utf-8字节.我们来检查吧.
> "\u0131".bytes.to_a
=> [196, 177]
Run Code Online (Sandbox Code Playgroud)
好的,有两个字节,但它们是UTF-8还是UTF-16字节?最简单的检查方法是查看二进制表示.让我们迭代每个字节并以二进制基数打印它们:
>> "\u0131".each_byte {|b| print b.to_s(2)};puts
1100010010110001
=> nil
Run Code Online (Sandbox Code Playgroud)
这是你的字符串的二进制表示 - 正如你所看到的,这是char的正确UTF-8双字节序列100110001,即0x0131:
110 00100 10 110001
--- -- ? UTF-8 markers for 2-byte char
===== ====== ? bits of your char
Run Code Online (Sandbox Code Playgroud)
所以答案是 - 什么也不做.该字符串已经是utf-8,QED