我正在开发一个通过ajax提交法语翻译的rails应用程序,由于某种原因,我在日志中不断收到以下错误:
Encoding::CompatibilityError incompatible character encodings: UTF-8 and ASCII-8BIT
有谁知道如何解决这个问题?
FIX:这适用于WEBrick服务器
将# encode: UTF-8
放在要使用不同字符的每个文件的顶部
我无法让这个在带有Thin的rails服务器上工作......其他人遇到了这个吗?
答案 0 :(得分:1)
以上链接解决了我的问题。
特别是myString.force_encoding('UTF-8')
字符串,然后再发送给它进行翻译。
将示例代码放在Application_controller.rb文件中,一切都很好
答案 1 :(得分:0)
我知道这是旧的,但我有同样的问题,解决方案是@dennismonsewicz给出的链接。详细地说,代码是:
是:
before_filter :force_utf8_params
def force_utf8_params
traverse = lambda do |object, block|
if object.kind_of?(Hash)
object.each_value { |o| traverse.call(o, block) }
elsif object.kind_of?(Array)
object.each { |o| traverse.call(o, block) }
else
block.call(object)
end
object
end
force_encoding = lambda do |o|
o.force_encoding(Encoding::UTF_8) if o.respond_to?(:force_encoding)
end
traverse.call(params, force_encoding)
end
答案 2 :(得分:0)
我通过将utf8文件转换为ascii来修复此问题。 请在此处查看答案:ruby 1.9 + sinatra incompatible character encodings: ASCII-8BIT and UTF-8