使用rails资产管道在javascript文件中编码问题

时间:2011-10-13 23:21:03

标签: ruby-on-rails ruby ruby-on-rails-3.1 asset-pipeline

我正在使用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解决方案我该如何避免呢?

1 个答案:

答案 0 :(得分:20)

加载文件时,Ruby会尝试“猜测”其编码。如果没有找到UTF-8或任何其他非ASCII字符,则它使用US-ASCII作为文件的编码,如果突然遇到非ASCII字符,则会抛出错误,例如,在运行时加载。

此问题的最佳解决方案是强制Ruby通过添加使用某种编码 {。{1}}作为.rb文件的第一行,# encoding: utf-8,如果它是.erb文件。