导轨错误:在 UTF-8 上"xE4"后跟"l"



当我在 rails 4.2.6 上加载带有链接标签的 css 或 js 文件时javascript_include_tagstylesheet_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,批量更新可能会导致相反的问题。

最新更新