2016-11-20 5 views
1

私のタイの文字列は次のとおりです。 "หลับตาฝันถึงชื่อเธอ"Ruby:utf-8文字列をトランスコードする方法は?

と私は出力にこのようなUTF-8エンコーディングを必要とする: 「\ u0e08 \ u0e2d \ u0e21 \ u0e40 \ u0e27 \ u0e17 \ u0e22 \ u0e4c \ u0e21 \ u0e2b \ u0e32" 瞬間

、私がインストールさ 'iconvの' 宝石と
string = Iconv.conv('unicode', 'utf-8', string) 

を使用しています。しかし、それは働いていません。

invalid encoding ("unicode", "utf-8") (Iconv::InvalidEncoding) 

Iconvを使用する必要がありますかエンコードしますか? (私はRuby 2.3.1を使用しています)

答えて

0

あなたは.encodeがベストですが、それは標準ライブラリにあります。 Iconvには、Ruby 1.9.3

ので、廃止されている。しかし、私は

"หลับตาฝัน ถึงชื่อเธอ".encode("utf-8") 

を行うとき、私はあなたが望むものとして、別の結果を得ます。

EDIT:この

# coding: UTF-8 
p "หลับตาฝัน ถึงชื่อเธอ".encode("utf-8") # "\u0E2B\u0E25\u0E31\u0E1A\u0E15\u0E32\u0E1D\u0E31\u0E19\u0E16\u0E36\u0E07\u0E0A\u0E37\u0E48\u0E2D\u0E40\u0E18\u0E2D" 

ようにIRBではなく、スクリプトの中でテストされていないが、あなたの望ましい結果のか?

+0

(と私のコードで) ' "หลับตาฝันถึงชื่อเธอ" .encode( "UTF-8")' ちょうど ' を出力 "หลับตาฝันถึงชื่อเธอ"' @peter – matski

+0

感謝IRBもUnicodeを認識していないように思える: ' "หลับตาฝันถึงชื่อเธอ" .encoding =>#<エンコード:UTF-8> "\ u0E2B \ u0E25 \" エンコーディング =>#<エンコード:UTF -8> ' – matski

+0

irbのthai文字を表示することもできません。コードページ(私はWindows上にある)に関するものでなければなりません。私のようなスクリプト – peter

0
"Développement".encode("iso-8859-1").force_encoding("utf-8") 
#=> "Développement" 

エンコードを強制する必要があります。 IRBでは

関連する問題