我使用Bootstrap Flash Message Gem和jruby 1.7.0并且在Flash消息中遇到外来字符和变音符号的问题。
当我使用像ruby-1.9.3这样的'普通'红宝石时,一切正常。 flash_messages.inspect输出: “Felix Meieraétéinscritau sous-groupe'Administrators'。”
但是使用jruby-1.7.0,exacltly相同的代码产生: “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消息是问题?):
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"