My Raylar 3.2.2/Yakut 1.9.3 uygulama gibi arama isteklerini alır:Ruby karakter kodlamasını belirleyin 1.9.3
http://booko.com.au/books/search?q=Fran%E7ois+Vergniolle+de+Chantal
Yakut/Raylar bu sorguyu alır ve bunu deşifre - ama UTF-var varsayar 8.
q="Fran%E7ois+Vergniolle+de+Chantal"
=> "Fran%E7ois+Vergniolle+de+Chantal"
CGI.unescape(q)
=> "Fran\xE7ois Vergniolle de Chantal"
CGI.unescape(q).encoding.name
=> "UTF-8"
CGI.unescape(q).valid_encoding?
=> false
bu başa doğru yolu nedir:
invalid byte sequence in UTF-8
app/models/product.rb:694:in `upcase'
Ben böyle bir şey yaptığını düşünüyorum: Bir noktada ben olsun? Doğru kodlamaya dönüştürmek istiyorum - ancak mevcut kodlamayı nasıl belirleyebilirim?
q = q.unpack('C*').pack('U*')
bunlarla başa doğru yolu nedir: Bir yerde blogda buldum
q.encode!("ISO-8859-1", "UTF-8", :invalid => :replace, :undef => :replace, :replace => "")
Veya yapıyor şey: Şu anda yapıyor o ki, üstleniyor o LATIN1 var?
Düzenleme sunucusunun doğru "Content-Type: text/html; charset = utf-8" gönderiyor başlığını müşteriye. Sayfa ayrıca uygun meta etiketi içerir: 'meta http-equiv = "içerik türü" content = "text/html; charset = UTF-8"'
İstemciye hangi kodlamaları bildirmenin başka bir yöntemi olup olmadığından emin değilsiniz. kullanmak?
"App/models/product.rb" nin üstünde "# kodlama: UTF-8" yazacak olursanız ne olur? Bu hatayı çözmesi gerektiğini düşünüyorum. Bu çözümden memnun kalacak mısınız? – ck3g
@ ck3g, nope, burada dosya kodlamasıyla ilgili değil. – fl00r
Doğru bayıltmayı belirlemek için bir çeşit sözlük kullanmanız gerekir; çünkü aynı 0x10 parametresi, Latin1 dışındaki kodlamalarda geçerli bir karakter olabilir (ve aslında). –