当我使用链接标记 javascript_include_tag 和 stylesheet_link_tag 在rails 4.2.6上加载css或js文件时我收到错误:
在/ app处编码:: InvalidByteSequenceError " \ XE4"其次是" l"在UTF-8上
我之前从未见过这个错误。当我使用html脚本加载这些相同的文件时:
<script src="/assets/app/functions.js"></script>
然后它有效。
我的 app / assets / javascripts / application.js 是:
//= require jquery
//= require jquery_ujs
//= require turbolink__s EDITED
//= require__tree . EDITED
之前有人遇到过这个问题吗?
谢谢!
答案 0 :(得分:5)
好的,既然你似乎不理解评论中的简短解释,我会把它作为答案。
puts "\xE4".force_encoding('ISO-8859-1').encode('UTF-8')
#⇒ ä
也就是说,您的样式表中的一个(或多个)或一个(或多个)javascripts都以ISO-8859-1
编码存储。 Ruby默认尝试读取UTF-8
中的所有内容。您应该找到导致问题的文件,在任何编辑器中打开它并保存回UTF-8
编码。
您也可以使用smth进行批量更新,例如
Dir['*/**/*.js', '*/**/*.css'].each do |f|
File.write f, File.read(f).force_encoding('ISO-8859-1').encode('UTF-8')
end
请注意,如果任何文件包含有效的utf-8,批量更新可能会导致相反的问题。