当我在 rails 4.2.6 上加载带有链接标签的 css 或 js 文件时javascript_include_tag和stylesheet_link_tag出现错误:
Encoding::InvalidByteSequenceError at/app"\xE4"后跟"l"(UTF-8)
我以前从未见过此错误。当我使用 html 脚本加载这些相同的文件时,如下所示:
<script src="/assets/app/functions.js"></script>
然后它起作用了。
我的应用程序/资产/JavaScripts/应用程序.js是:
//= require jquery
//= require jquery_ujs
//= require turbolink__s EDITED
//= require__tree . EDITED
以前有人遇到过这个问题吗?
谢谢!
好的,由于您似乎不理解评论中的简短解释,因此我将以此作为答案。
puts "xE4".force_encoding('ISO-8859-1').encode('UTF-8')
#⇒ ä
也就是说,一个(或多个)样式表,或者一个(或多个)JavaScript都存储在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,批量更新可能会导致相反的问题。