2010-11-04 57 views
11

我的工作對通過AJAX出於某種原因,我不斷收到以下錯誤日誌中提交法語翻譯一個Rails應用程序:Rails 3的編碼:: CompatibilityError

Encoding::CompatibilityError incompatible character encodings: UTF-8 and ASCII-8BIT

有誰知道解決這個問題?

FIX:這部作品在WEBrick斷絕

廣場# encode: UTF-8你想用不同的字符工作的每個文件的頂部

我不能得到這個與細細一軌服務器上運行。 ..其他人遇到這個?

+0

您是否使用「mysql」gem? – 2012-03-27 19:27:04

回答

1

https://rails.lighthouseapp.com/projects/8994/tickets/4336-ruby19-submitted-string-form-parameters-with-non-ascii-characters-cause-encoding-errors

上面的鏈接固定我的問題。

具體myString.force_encoding('UTF-8')上的字符串發送之前進行翻譯。

放置示例代碼中Application_controller.rb文件,一切都很好

+2

你的鏈接爛了。你能在這裏粘貼示例代碼嗎? – Will 2011-06-15 14:55:30

+0

+1將必要的代碼粘貼到答案中,可以節省其他時間 – tmaximini 2011-07-12 22:33:41

+0

代碼在我身上,'String.force_encoding('UTF-8')'是我見過的最好的解決方法。將服務器從1.8.7升級到1.9.2之前不會有問題 – Nilloc 2012-03-13 23:01:36

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