2013-09-21 16 views
6

Po zapisaniu nowego kontaktu wystąpił następujący błąd. Czy istnieje sposób na przesłanie "\xC2", aby można było go zmusić do zapisania w formacie UTF-8?Kodowanie :: UndefinedConversionError: " xC2" z ASCII-8BIT na UTF-8

c = Contact.new 
c.save! 

Encoding::UndefinedConversionError: "\xC2" from ASCII-8BIT to UTF-8: INSERT INTO "contacts" ("body", "created_at", "email", "updated_at") VALUES (?, ?, ?, ?)

Odpowiedz

17

Twój ciąg jest w jakimś innym kodowaniem, najprawdopodobniej iso-8859-1, więc należy uruchomić to, aby ją przekształcić:

"\xC2".encode("iso-8859-1").force_encoding("utf-8") 
=> "Ã" 

Zobacz this question uzyskać więcej informacji dotyczących tego kwestia.

+0

Wymyślała konwersję kodu używanego w HtmlEntities z 1.8.7 na 1.9.3 - Pomogło to. Dzięki! – Subimage

2

To, co jest warte, sprawiło, że pojawił się ten problem, gdy przeczytałem plik kodu z symbolem stopnia (°) w komentarzu. Po zakodowaniu go dla jsona rubin stał się niesamowicie nieszczęśliwy.

To, co rzuciło mi się w pętlę, to fakt, że w kodzie nie ma znaku "Ã", więc należy o tym pamiętać.

Powiązane problemy