我有一个必须以UTF-8保存的部分_searchresults.html.erb。Ruby on Rails在escape_javascript中处理UTF-8
然后我有一些javaxript/AJAX代码来渲染部分:
<% # encoding: utf-8
%>
stopLoading();
$('#searchresults').html('<%= escape_javascript(render("shared/searchresults")) %>');
每次我尝试访问相关页面,我得到:
ActionView::Template::Error (invalid byte sequence in UTF-8):
1: <% # encoding: utf-8
2: %>
3: stopLoading();
4: $('#searchresults').html('<%= escape_javascript(render("shared/searchresults")) %>');
app/views/searches/index.de.js.erb:4:in `_app_views_searches_index_de_js_erb__423966875_35661432__279394272'
我所有的文件进行编码与UTF-8和所有相关的* .erb文件有# encoding: utf-8
神奇的评论。
我能做些什么吗?
编辑:
现在我试图逃跑手动JS:
def my_js_escape(js)
if(js)
ret = js.force_encoding('utf-8')
ret.gsub!(/\\/u, '\\\\')
#ret.gsub!(/<\//u, '<\/').force_encoding('utf-8')
#ret.gsub!(/"/u, '\\"').force_encoding('utf-8')
#ret.gsub!(/'/u, "\\'").force_encoding('utf-8')
#/(\\|<\/|\r\n|[\n\r"'])/
return ret
else
''
end
end
红宝石使我对每一个来电GSUB同样的错误,即使我把.force_encoding上的所有替换字符串。
不幸的是,它不-.-还是同样的错误 – DeX3 2011-04-07 10:40:48
道歉DEX3,试试上面改为链接。让我知道它是否有效 – 2potatocakes 2011-04-07 23:23:57
它对我有效,但我不得不强制输出** render **的编码:'(render(“shared/searchresults”))。force_encoding(“utf-8”)' – 2017-06-13 09:46:14