我在重构小型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
,并在网上上下搜索,但没有找到解决方法。
答案 0 :(得分:0)
发现问题出在输入中。 erubis尝试将其解析为ASCII,但是遇到了一些讨厌的字符并掉在了它的脸上。
不幸的是,erubis没有对编码问题发表评论,因此我通过以下答案找到了解决方案: Does Ruby provide a way to do File.read() with specified encoding?
告诉红宝石读取过程中数据的编码是这样的:
File.read('/someir//chpwd.html', :encoding => 'utf-8')
erubis会正确处理