2011-10-20 13 views
1

Ruby noobの合計です。スクリプトをハックして機能させるだけです。Iconvを使用してUTF-8からlatin1に変換する際のエラー

irb(main):011:0> Iconv.iconv("LATIN1//IGNORE", "UTF-8", "Résumé") 
Iconv::InvalidCharacter: "\351" 
    from (irb):11:in `iconv' 
    from (irb):11 
    from :0 
irb(main):012:0> Iconv.iconv("LATIN1//TRANSLIT//IGNORE", "UTF-8", "Résumé") 
Iconv::IllegalSequence: "\351sum\351" 
    from (irb):12:in `iconv' 
    from (irb):12 
    from :0 
irb(main):002:0> "Résumé".encoding 
NoMethodError: undefined method `encoding' for "R\351sum\351":String 
    from (irb):2 

答えて

1

入力文字列をすでにLATIN1と解釈しているため、そのパスに沿って変換することはできません。開始するには、エンコーディングをUTF-8に設定する必要があります。 \351はLATIN1 é文字です。あなたは次のような結果たい

"Résumé".encoding 
# => #<Encoding:UTF-8> 

をあなたのLANG環境変数を確認するか、デフォルトの文字エンコーディングを決定するために使用するものは何でもあなたのプラットフォームがあります。

+0

ありがとうございました。これは私が得るものです:irb(main):002:0> "Résumé" .encoding NoMethodError: "R \ 351sum \ 351"のための未定義メソッド 'encoding ':String from(irb):2 –

+0

あなたのように見えます。 Ruby 1.8.xを使用しています。文字エンコーディングについてはほとんど知らないので、使用している端末やコマンドプロンプトの対象となります。 ''Résumé'.unpack( "C *") 'を使って文字列の内容を調べることができます。' [82、195、169、115、117、109、195、169] 'UTF-8モードの場合は' LATIN1の場合は '[82、233、115、117、109、233]'となります。 – tadman

関連する問題