使用ruby将unicode转换为字符

使用ruby将unicode转换为字符,ruby,unicode,cjk,Ruby,Unicode,Cjk,我发现了一本unicode汉字词典。我正试图用这本词典建立一个字符数据库,但我不知道如何将unicode转换成字符 p "国".unpack("U*").first #this gives the unicode 22269 如何将22269转换回与上一行相反的字符值 [22269].pack('U*') #=> "国" or "\345\233\275" 编辑:适用于1.8.6+(在1.8.6、1.8.7和1.9.2中验证)。在1.8.x中,您会得到一个表示单个Unicode字符的三

我发现了一本unicode汉字词典。我正试图用这本词典建立一个字符数据库,但我不知道如何将unicode转换成字符

p "国".unpack("U*").first #this gives the unicode 22269
如何将
22269
转换回与上一行相反的字符值

[22269].pack('U*') #=> "国" or "\345\233\275"
编辑:适用于1.8.6+(在1.8.6、1.8.7和1.9.2中验证)。在1.8.x中,您会得到一个表示单个Unicode字符的三字节字符串,但使用
置于其上,这会导致正确的中文字符出现在终端中。

Ruby 1.9:

p "国".codepoints.first #=> 22269
p 22269.chr('UTF-8') #=> "国"

你用的是什么版本的Ruby?我有rvm,所以没关系。欢迎提供包括1.9.2在内的任何建议。如果您要转换大量文本,您可能需要查看Ruby模块,它是核心库的一部分。还有文件。詹姆斯·爱德华·格雷写了一篇很好的文章,名为。IConv的好处在于,它可以进行音译,即在没有匹配的情况下更改为类似的字符,或者忽略,因此您的转换会以可控的方式降级。@Sam显然,您使用的是什么版本并不重要。(请参见编辑):“显然,您使用的版本并不重要。”lol。可以使用
C
进行ASCII+
unpack
进行反向操作。仅供读者参考。@Sam您使用了哪个版本的ruby?@Sam codepoints是1.9.2中的字符串方法:。不知道出了什么问题。在这里工作。