【问题标题】:Unicode Strings in Ruby 1.9Ruby 1.9 中的 Unicode 字符串
【发布时间】:2010-12-29 16:10:44
【问题描述】:

我编写了一个 Ruby 脚本,它正在读取一个包含 unicode 字符的文件 (File.read()),它在命令行中运行良好。

但是,当我尝试将其放入 Automator Workflow (Mac OS X) 时,我收到此错误;

2009-12-23 17:55:15 -0500: /Users/jeffreyaylesworth/bin/symbols:19:in `split': invalid byte sequence in US-ASCII (ArgumentError)
(traceback)

所以当从 Automator 运行时,sp​​lit 突然不喜欢非 ASCII 字符。据我所知,两者都使用相同版本的 Ruby(版本号相同)。

我不太关心他们为什么表现不同(但如果有人知道,那就太好了),但我想要一个解决方案,让 split 接受非 ASCII 字符。

如果有帮助,我需要将单个字符的文本分成两部分,所以如果类似于 C 的标记器的东西可以工作,我可以使用它。

【问题讨论】:

    标签: ruby unicode text-processing


    【解决方案1】:

    听起来这两者是在不同的环境中运行的 - 具有不同的 LOCALE 值。

    【讨论】:

      【解决方案2】:

      您没有指定文件的编码。由于不可能可靠地自动确定文件的编码,因此必须明确指定编码。如果不是,则使用外部编码,如果未设置,将使用环境中指定的编码,如果环境未指定编码,则假定文件在 7位 US-ASCII。

      在您的情况下,这两种环境似乎存在差异(自动脚本通常在没有区域设置的非常严格的环境中运行)或解释器被调用的方式。

      所以,你需要做类似的事情

      File.read('/path/to/file', encoding: 'UTF-8')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-07
        • 1970-01-01
        • 2011-01-17
        • 1970-01-01
        • 2012-03-03
        • 2020-04-02
        • 2015-11-29
        • 2014-05-22
        相关资源
        最近更新 更多