spi*_*ike 10 ruby ruby-on-rails ruby-on-rails-3.1 asset-pipeline
我正在使用rails 3.1和资产管道(ruby 1.9.2).
尝试提供js.erb
具有utf-8编码字符串的javascript 文件时出现以下错误
invalid byte sequence in US-ASCII
Run Code Online (Sandbox Code Playgroud)
我已经Encoding.default_external = "UTF-8"
在我的environment.rb文件中设置了.如何让资产管道使用不同的编码?
编辑
当我在文件外部生成utf-8字符时(此时通过从DB查询),只会显示错误.如果我添加,错误消失了
<% "?" %>
Run Code Online (Sandbox Code Playgroud)
到文件的顶部.我猜这里有某种编码猜测,但如果没有那种hacky解决方案,我该如何避免呢?
Fra*_*ane 19
加载文件时,Ruby会尝试"猜测"其编码.如果未找到UTF-8或任何其他非ASCII字符,则它使用US-ASCII作为文件的编码,如果突然遇到非ASCII字符(例如在运行时加载),则会引发错误.
解决此问题的最佳方法是通过添加# encoding: utf-8
.rb文件的第一行或者<%# encoding: utf-8 %>
如果它是.erb文件来强制Ruby使用某种编码
.