2011-01-06 42 views
5

Unicode dilinde Çince karakterler sözlüğü buldum.unicode karakterine ruby ​​ile çevirme

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

Nasıl tersi olur karakter değerine geri 22269 dönüştürebilirsiniz .. ben bu sözlükte dışına Karakterler bir veritabanı oluşturmaya çalışıyorum ama karaktere unicode dönüştürmek için nasıl bilmiyorum Yukarıdaki satırın

+2

kullanıyorsunuz Ruby sürümü nedir? – Phrogz

+0

Rvm var, bu yüzden önemli değil. 1.9.2 dahil olmak üzere her türlü öneri kabul edilir. – s84

+1

Çok fazla metin dönüştürüyorsanız, çekirdeğin bir parçası olan Ruby's [IConv] (http://ruby-doc.org/stdlib/libdoc/iconv/rdoc/index.html) modülüne bakmak isteyebilirsiniz. kütüphane. [rubydoc.info] (http://rubydoc.info/stdlib/iconv/1.9.2/frames) ayrıca belgelere sahiptir. Ve James Edward Gray [Encoding Conversion with iconv] (http://blog.grayproductions.net/articles/encoding_conversion_with_iconv) adlı güzel bir makale yaptı. IConv ile ilgili güzel şey, benzetme, yani benzer görünen karakterlere geçme veya eşleşme olmadığında yok sayılabilir, böylece dönüşümünüz kontrollü bir şekilde azalır. –

cevap

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

Düzenleme: (1.8.6, 1.8.7 doğrulandı ve 1.9.2) 1.8.6+ çalışır. 1.8.x'te, tek Unicode karakterini temsil eden üç baytlık bir dize alırsınız, ancak puts'u kullanarak, doğru Çince karakterinin terminalde görünmesine neden olur.

+0

Bu işe yarıyor, teşekkürler! 1.8.7 için bir çözüm var mı? – s84

+3

@Sam Görünüşe göre hangi sürümü kullandığınız önemli değil. (Bkz. Düzenle) :) – Phrogz

+0

Unutkanın yükseltilmesinden önce ruby'nin buna benzediğini görüyor – s84

12

Yakut 1.9: Eğer

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

NoMethodError: "国" için tanımlanmamış yöntem "kod noktaları": String – s84

+0

@Sam Hangi ruby ​​sürümünü kullandınız? – steenslag

+0

1.8.7 ve 1.9.2'yi denedim. – s84