Cha*_*lie 21 ruby unicode utf-8
我试图在Ruby中找到一种方法来获取UTF-8字节数组并将其转换回字符串.
在irb(Ruby 1.9.2预览版3)中,我可以从UTF-8字符串创建正确的字节数组:
ruby-1.9.2-preview3 > 'Café'.bytes.to_a
=> [67, 97, 102, 195, 169]
Run Code Online (Sandbox Code Playgroud)
但是,我找不到从字节往返到数组的方法.我尝试使用带有U*选项的Array.pack,但这对多字节字符不起作用.
ruby-1.9.2-preview3 > [67, 97, 102, 195, 169].pack('U*')
=> "Café"
Run Code Online (Sandbox Code Playgroud)
有没有人知道一种方法来获取具有多字节字符的UTF-8字节数组并将其转换回字符串?
谢谢.
Jak*_*org 32
这与如何pack
解释其输入数据有关.在U*
你的榜样使其转化输入数据(假设为一个默认的字符集,我想,我真的找不到这个任何文件)为UTF-8,因此双编码.相反,只需打包字节并解释为UTF-8:
irb(main):010:0> [67, 97, 102, 195, 169].pack('C*').force_encoding('utf-8')
=> "Café"
Run Code Online (Sandbox Code Playgroud)
你特别询问一个字节数组,但也许代码点更合适:
ar = 'Café'.codepoints.to_a
# => [67, 97, 102, 233]
ar.pack('U*')
# => Café
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12215 次 |
最近记录: |