1

我使用 Bootstrap Flash Message Gem 和 jruby 1.7.0 并且在 Flash Message 中遇到外来字符和变音符号的问题。

当我使用像 ruby​​-1.9.3 这样的“普通”红宝石时,一切正常。flash_messages.inspect 输出:“Felix Meier a été inscrit au sous-groupe 'Administrators'。”

但对于 jruby-1.7.0,完全相同的代码会产生:“Felix Meier a \xC3\xA9t\xC3\xA9 enlev\xC3\xA9 du sous-groupe 'Administrators'。” 我得到一个错误

ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT):

所以问题是:我做错了什么,是 jruby 做错了什么还是 Bootstrap Flash Message Gem 的问题?

我在控制台上尝试了一些东西,但无法重现问题(表明 Flash Message 是问题所在?):

jruby-1.7.0 :005 >   q="Felix Meier a été inscrit au sous-groupe 'Administrators'"
 => "Felix Meier a été inscrit au sous-groupe 'Administrators'" 
jruby-1.7.0 :006 > CGI.unescape(q)
 => "Felix Meier a été inscrit au sous-groupe 'Administrators'" 
jruby-1.7.0 :007 > CGI.unescape(q).encoding.name
 => "UTF-8" 
jruby-1.7.0 :008 > CGI.unescape(q).valid_encoding?
 => true 
jruby-1.7.0 :009 > r="Felix Meier a \xC3\xA9t\xC3\xA9 enlev\xC3\xA9 du sous-groupe 'Administrators'"
 => "Felix Meier a été enlevé du sous-groupe 'Administrators'" 
jruby-1.7.0 :010 > CGI.unescape(r)
 => "Felix Meier a été enlevé du sous-groupe 'Administrators'" 
jruby-1.7.0 :011 > CGI.unescape(r).encoding.name
 => "UTF-8" 
4

0 回答 0