使用Iconv从UTF-8转换为latin1的错误

时间:2011-10-20 22:59:37

标签: ruby encoding utf-8 iconv

Total Ruby noob,只是试图破解脚本以使其正常工作。

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 个答案:

答案 0 :(得分:1)

由于它已将输入字符串解释为LATIN1,因此无法沿该路径转换它。您可能需要将编码设置为UTF-8才能启动。 \351是LATIN1 é字符。

您需要以下结果:

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

您可以检查LANG环境变量,或平台用于确定默认字符编码的任何内容。