我正在使用 Rails 3.1 和 Assets 管道 (ruby 1.9.2)。
在尝试提供具有 utf-8 编码字符串的 javascript js.erb
文件时出现以下错误
invalid byte sequence in US-ASCII
我在我的 environment.rb 文件中设置了 Encoding.default_external = "UTF-8"
。我如何让 Assets 管道以不同的编码提供服务?
编辑
仅当我在文件外部生成 utf-8 字符时才会出现该错误(在本例中是通过从数据库查询)。如果我添加
,错误就会消失<% "日" %>
到文件的顶部。我猜这里会进行某种编码猜测,但如果没有那种骇人听闻的解决方案,我该如何避免呢?
最佳答案
加载文件时,Ruby 会尝试“猜测”它的编码。如果未找到 UTF-8 或任何其他非 ASCII 字符,它将使用 US-ASCII 作为文件编码,并在突然遇到非 ASCII 字符时抛出错误,例如在运行时加载。
这个问题最好的解决方案是通过添加强制Ruby使用某种编码
# encoding: utf-8
作为 .rb 文件的第一行或 <%# encoding: utf-8 %>
如果是 .erb 文件。
关于ruby-on-rails - 使用 Rails Assets 管道在 JavaScript 文件中编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7761540/