Fer*_*ano 0 ruby ruby-on-rails utf-8 ruby-on-rails-4
当我在rails 4.2.6上使用链接标记javascript_include_tag和stylesheet_link_tag加载css或js文件时出现错误:
在/ app"\ xE4"处编码:: InvalidByteSequenceError,然后在UTF-8上使用"l"
我之前从未见过这个错误.当我用html脚本加载这些相同的文件时:
<script src="/assets/app/functions.js"></script>
Run Code Online (Sandbox Code Playgroud)
然后它工作.
我的app/assets/javascripts/application.js是:
//= require jquery
//= require jquery_ujs
//= require turbolink__s EDITED
//= require__tree . EDITED
Run Code Online (Sandbox Code Playgroud)
以前有人遇到过这个问题吗?
谢谢!
好的,既然你似乎不理解评论中的简短解释,我会把它作为答案.
puts "\xE4".force_encoding('ISO-8859-1').encode('UTF-8')
#? ä
Run Code Online (Sandbox Code Playgroud)
也就是说,您的样式表中的一个(或多个)或一个(或多个)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
Run Code Online (Sandbox Code Playgroud)
请注意,如果任何文件包含有效的utf-8,则批量更新可能会导致相反的问题.
| 归档时间: |
|
| 查看次数: |
956 次 |
| 最近记录: |