【问题标题】:erubis: `scan': invalid byte sequence in US-ASCII (ArgumentError)erubis: `scan': US-ASCII 中的无效字节序列 (ArgumentError)
【发布时间】:2018-06-28 13:06:34
【问题描述】:

我在重构一个小型 Web 服务时遇到了这个错误。有趣的是,在生产服务器上,它运行良好。

.../erubis-2.7.0/lib/erubis/converter.rb:132:in `scan': invalid byte sequence in US-ASCII (ArgumentError)
        from .../erubis-2.7.0/lib/erubis/converter.rb:132:in `convert_input'
        from .../erubis-2.7.0/lib/erubis/converter.rb:36:in `convert'
        from .../erubis-2.7.0/lib/erubis/engine.rb:30:in `initialize'

我在 Debian 9 机器上使用 ruby​​ 2.3.3p222 (2016-11-21) [x86_64-linux-gnu] 运行 apache。

这是我的代码:

input = File.read('/somedir/chpwd.html')
eruby = Erubis::Eruby.new(input)

我已将#encoding: utf-8 添加到我的 ruby​​-script 顶部并在网上上下搜索,但没有找到解决方案。

【问题讨论】:

    标签: ruby encoding utf-8 erubis


    【解决方案1】:

    原来问题出在输入中。 erubis 试图将其解析为 ASCII,但遇到了一些讨厌的字符并落在了它的脸上。

    不幸的是,erubis 没有评论编码问题,因此我通过这个答案找到了解决方案: Does Ruby provide a way to do File.read() with specified encoding?

    在读取过程中告诉 ruby​​ 数据的编码是什么,如下所示:

    File.read('/someir//chpwd.html', :encoding => 'utf-8')
    

    erubis 会妥善处理

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多