我正在使用rails 3.1和资产管道(ruby 1.9.2)。
尝试提供具有utf-8编码字符串的javascript js.erb
文件时出现以下错误
invalid byte sequence in US-ASCII
我在我的environment.rb文件中设置了Encoding.default_external = "UTF-8"
。如何让资产管道以不同的编码服务?
修改
当我在文件外部生成utf-8字符时(此时通过从DB查询),只会显示错误。如果我添加
,错误就会消失<% "日" %>
到文件的顶部。我猜这里有一些编码猜测,但是如果没有那个hacky解决方案我该如何避免呢?
答案 0 :(得分:20)
加载文件时,Ruby会尝试“猜测”其编码。如果没有找到UTF-8或任何其他非ASCII字符,则它使用US-ASCII作为文件的编码,如果突然遇到非ASCII字符,则会抛出错误,例如,在运行时加载。
此问题的最佳解决方案是强制Ruby通过添加使用某种编码
{。{1}}作为.rb文件的第一行,# encoding: utf-8
,如果它是.erb文件。