2011-01-06 155 views
5

我在unicode中找到了一個漢字字典。我試圖打造出人物本字典的數據庫,但我不知道如何爲Unicode轉換爲字符..將unicode轉換爲紅寶石字符

p "國".unpack("U*").first #this gives the unicode 22269 

如何轉換22269回這將是相反的字符值上面的行。

+2

什麼版本的Ruby您使用的是? – Phrogz 2011-01-06 22:20:10

+0

我有rvm,所以沒關係。歡迎任何建議,包括1.9.2。 – s84 2011-01-06 22:22:09

+1

如果您要轉換大量文本,您可能需要查看Ruby的[IConv](http://ruby-doc.org/stdlib/libdoc/iconv/rdoc/index.html)模塊,該模塊是核心的一部分圖書館。 [rubydoc.info](http://rubydoc.info/stdlib/iconv/1.9.2/frames)也有文檔。詹姆斯·愛德華·格雷做了一篇很好的文章,稱爲[使用iconv編碼轉換](http://blog.grayproductions.net/articles/encoding_conversion_with_iconv)。 IConv的好處在於它可以音譯,即轉換爲類似的外觀字符,或者在沒有匹配的情況下忽略,因此轉換以受控方式降級。 – 2011-01-07 00:02:40

回答

11
[22269].pack('U*') #=> "國" or "\345\233\275" 

編輯:在1.8.6+(在1.8.6,1.8.7驗證和1.9.2)的作品。在1.8.x中,您會得到一個代表單個Unicode字符的三字節字符串,但使用puts會導致在終端中出現正確的中文字符。

12

紅寶石1.9:

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