5
我在unicode中找到了一個漢字字典。我試圖打造出人物本字典的數據庫,但我不知道如何爲Unicode轉換爲字符..將unicode轉換爲紅寶石字符
p "國".unpack("U*").first #this gives the unicode 22269
如何轉換22269
回這將是相反的字符值上面的行。
我在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字符的三字節字符串,但使用puts
會導致在終端中出現正確的中文字符。
紅寶石1.9:
p "國".codepoints.first #=> 22269
p 22269.chr('UTF-8') #=> "國"
什麼版本的Ruby您使用的是? – Phrogz 2011-01-06 22:20:10
我有rvm,所以沒關係。歡迎任何建議,包括1.9.2。 – s84 2011-01-06 22:22:09
如果您要轉換大量文本,您可能需要查看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