0

我在重构一个小型 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 顶部并在网上上下搜索,但没有找到解决方案。

4

1 回答 1

0

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

不幸的是,erubis 没有评论编码问题,因此我通过这个答案找到了解决方案: Ruby 是否提供了一种使用指定编码执行 File.read() 的方法?

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

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

erubis 会妥善处理

于 2018-06-28T13:06:34.050 回答