Codierung :: UndefinedConversionError
Ich immer eine Encoding::UndefinedConversionError - "\xC2" from ASCII-8BIT to UTF-8
jedes mal, wenn ich versuchen zu konvertieren, einen hash in einen JSON-string. Ich habe versucht, mit [.encode | .force_encoding](["UTF-8" | "ASCII-8BIT" ])
, Verkettung .encode
mit .force_encoding
hinten, Schalt-Parameter, aber nichts schien zu funktionieren so dass ich den Fehler erwischt, wie diese:
begin
menu.to_json
rescue Encoding::UndefinedConversionError
puts $!.error_char.dump
p $!.error_char.encoding
end
Wo Menü ist eine Fortsetzung der dataset.to_hash mit Inhalten aus einer MySQL-DB, utf8_general_ci Kodierung und kehrte diese:
"\xC2"
<#Kodierung:ASCII-8BIT>
Die Codierung ändert sich nie, egal, was .encode
/.force_encoding
ich verwenden. Ich habe sogar versucht, ersetzen Sie die Zeichenfolge .gsub!(/\\\xC2/)
ohne Glück.
Irgendwelche Ideen?
- Menü.force_encoding("ISO-8859-1").encode("UTF-8")
2. fügen Sie ein "# encoding "utf-8" saite an der Spitze der alle Ihre .rb-Dateien. 3. Überprüfen Sie Ihre Umgebung. was bedeutet $ echo LC_CTYPE
in dein terminal sagen? InformationsquelleAutor der Frage martriay | 2012-10-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese hat Prima funktioniert, ich hatte zu ersetzen, einige zusätzliche Zeichen, aber es gibt keine Fehler mehr.
InformationsquelleAutor der Antwort martriay
Was erwartest du für "\xC2"? Wahrscheinlich ein
Â
Mit ASCII-8BIT Sie haben binäre Daten, und ruby kippe entscheiden, was sein sollte.
Müssen Sie zunächst die Kodierung mit
force_encoding
.Können Sie versuchen, den folgenden code:
Das Ergebnis sind die möglichen Werte in unterschiedliche Codierungen für Ihre "\xC2".
Das Ergebnis hängt von Ihrer Output-format, aber ich glaube, Sie können eine gute Vermutung, die Codierung, die Sie haben.
Wenn Sie definiert die Codierung, die Sie brauchen (wahrscheinlich cp1251) können Sie
Siehe auch Kashyaps Kommentar.
InformationsquelleAutor der Antwort knut
Wenn Sie kümmern nicht zu verlieren, die seltsamen Zeichen, können Sie Blasen Sie Weg:
InformationsquelleAutor der Antwort Ponny
Ihre auto-akzeptierte Lösung nicht funktioniert, gibt es effektiv keine Fehler, aber es ist NICHT JSON.
Ich löste das problem mit Hilfe der ABL-Juwel, es funktioniert jetzt finden. Es ist auch schneller als die standard-JSON-Bibliothek.
Schreiben :
Lesen :
https://github.com/ohler55/oj für mehr details. Ich hoffe, es wird helfen.
InformationsquelleAutor der Antwort gvo