2010-11-04 35 views
11

ajax ile ve ben günlüğüne aşağıdaki hata almaya devam nedense bir Fransız çevirisini gönderen bir raylar uygulama üzerinde çalışıyorum:Raylar 3 Kodlama :: CompatibilityError

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

Herkes biliyor mu Bunu düzeltmek için?

Düzeltme: Bu

Bu Thin bir raylar sunucusunda çalışmak için alamayan farklı karakter ile çalışmak isteyen her dosyanın üst kısmında

Yeri # encode: UTF-8 sever WEBrick üzerinde çalışır. .. başka kimse buna karışıyor mu?

+0

"mysql" gemini kullanıyor musunuz? –

cevap

1

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

Yukarıdaki bağlantı sorunumu sabit.

Özellikle çeviri için göndermeden önce dizede myString.force_encoding('UTF-8') belirtin.

application_controller.rb dosyasında örnek kod yerleştirilen ve tüm bu eski olduğunu biliyorum iyi

+2

Bağlantınız çürümüş. Örnek kodu buraya yapıştırabilir misin? – Will

+0

+1, gerekli kodu cevabın içine yapıştırmak için, başkalarına zaman kazandıracak – tmaximini

+0

Kodu benim için oradaydı, 'String.force_encoding ('UTF-8')' gördüğüm en iyi çözümdür. Sunucu 1.8.7'den 1.9.2'ye yükseltilinceye kadar bir sorun değildi. – Nilloc

0

, ama aynı problem vardı ve bağlantı @dennismonsewicz verdi içinde çözüm oldu. Ayrıntılı olarak, kod oldu:

oldu: Ben ASCII bir utf8 dosyası dönüştürerek bu sorunu giderilmiştir

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