2011-01-06 11 views
5

유니 코드로 한자 사전을 찾았습니다.유니 코드를 루비 문자로 변환

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

어떻게 반대 할 것입니다 문자 값으로 다시 22269을 변환 할 수 있습니다 .. 나는이 사전 중 캐릭터의 데이터베이스를 구축하기 위해 노력하고있어하지만 난 문자를 유니 코드로 변환하는 방법을 모른다 위의 줄.

+2

을 사용하는 루비 버전은 무엇? – Phrogz

+0

나는 문제가되지 않도록 rvm을 가지고있다. 1.9.2를 포함한 어떠한 제안도 환영합니다. – s84

+1

많은 텍스트를 변환하는 경우 코어의 일부인 Ruby의 [IConv] (http://ruby-doc.org/stdlib/libdoc/iconv/rdoc/index.html) 모듈을 살펴볼 수 있습니다. 도서관. [rubydoc.info] (http://rubydoc.info/stdlib/iconv/1.9.2/frames)에도 문서가 있습니다. James Edward Gray는 [iconv로 변환 인코딩]이라는 멋진 기사를 작성했습니다 (http://blog.grayproductions.net/articles/encoding_conversion_with_iconv). IConv의 장점은 음역 할 수 있다는 것입니다. 즉, 유사한 문자로 변경하거나 무시할 때 무시할 수 있기 때문에 변환이 통제 된 방식으로 저하됩니다. –

답변

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

편집은 (1.8.6, 1.8.7에 확인하고, 1.9.2) 1.8.6+에서 작동합니다. 1.8.x에서는 단일 유니 코드 문자를 나타내는 3 바이트 문자열을 얻지 만 puts을 사용하면 올바른 중국어 문자가 터미널에 나타납니다.

+0

그거 고마워! 1.8.7에 대한 해결책이 있습니까? – s84

+3

@Sam 분명히 당신이 사용하고있는 버전은 중요하지 않습니다. (편집 참조) :) – Phrogz

+0

유니 코드 업그레이드 전에 루비처럼 보입니다. – s84

12

루비 1.9 : 당신이

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

NoMethodError : "country"에 대해 정의되지 않은 메서드 'codepoints': String – s84

+0

@Sam 어떤 루비 버전을 사용 했습니까? – steenslag

+0

시도해 보았습니다. 1.8.7 및 1.9.2 – s84

관련 문제