Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

convert unicode into character with ruby

Tags:

ruby

unicode

cjk

I found a dictionary of Chinese characters in unicode. I'm trying to build a database of Characters out of this dictionary but I don't know how to convert unicode to a character..

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

How can convert 22269 back into the character value which would be the opposite of the line above.

like image 522
thenengah Avatar asked Jan 06 '11 22:01

thenengah


2 Answers

Ruby 1.9 :

p "国".codepoints.first #=> 22269
p 22269.chr('UTF-8') #=> "国"
like image 189
steenslag Avatar answered Oct 27 '22 06:10

steenslag


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

Edit: Works in 1.8.6+ (verified in 1.8.6, 1.8.7, and 1.9.2). In 1.8.x you get a three-byte string representing the single Unicode character, but using puts on that causes the correct Chinese character to appear in the terminal.

like image 33
Phrogz Avatar answered Oct 27 '22 07:10

Phrogz