使用 Iconv 从 UTF-8 转换为 latin1 时出错

发布于 2024-12-11 06:10:39 字数 520 浏览 0 评论 0原文

完全的 Ruby 菜鸟,只是想破解一个脚本以使其工作。

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

Total Ruby noob, just trying to hack a script to make it work.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

叹倦 2024-12-18 06:10:39

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

您想要以下结果:

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

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

Since it's interpreting your input string as LATIN1 already, you can't convert it along that path. You may need to set your encoding to be UTF-8 to start. \351 is a LATIN1 é character.

You want the following result:

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

You could check your LANG environment variable, or whatever your platform uses to determine the default character encoding.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文