Wie konvertiere ich einen string von windows-1252 zu utf-8 in Ruby?
Ich bin die Migration von Daten aus MS Access 2003, MySQL 5.0 mit Ruby-1.8.6 unter Windows XP (schreiben ein Rake-task, dies zu tun).
Stellt sich heraus, das Windows-string-Daten im Format windows-1252 und Rails und MySQL sind jeweils vorausgesetzt, dass utf-8-Eingabe so einige Charaktere, wie Apostrophe, sind immer entstellt. Sie wind-up als "a"s mit einem Akzent, der über Sie und so ein Zeug.
Kennt jemand ein tool, library, system, Methodik, ritual, Zauber oder Beschwörung konvertieren Sie eine windows-1252 string auf utf-8?
- Wenn Sie sagen, "ich bin die Migration von Daten aus MS Access 2003, MySQL 5.0", was du meinst, ist "ich bin die Migration von Daten aus MS Jet 4 auf MySQL 5.0". Der Unterschied ist von entscheidender Bedeutung-Sie sind nicht mit Access, sondern nur die Jet-Datenbank-engine.
- Danke, das ist gut zu wissen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für Ruby 1.8.6, es scheint, dass Sie verwenden können Ruby-Iconv, Teil der standard-Bibliothek:
Iconv-Dokumentation
Gemäß dieser hilfreiche Artikel, es scheint, Sie können mindestens bereinigen unerwünschte win-1252-Zeichen aus Ihrem string, etwa so:
Könnte man dann versuchen zu tun, eine vollständige Umsetzung zum Beispiel so:
Wenn Sie auf Ruby 1.9...
Hy,
Ich hatte genau das gleiche problem.
Diese Tipps hat mir geholfen, get goin:
Prüfen Sie stets, ob das richtige encoding-Namen, um zu füttern, Ihre conversion-tools richtig.
Im Zweifel können Sie eine Liste der unterstützten Kodierungen für iconv oder recode über:
oder
Immer starten, aus der Sie die ursprüngliche Datei und Kodieren ein Beispiel für die Arbeit mit:
oder
Install Ruby1.9, weil es hilft Ihnen EINE MENGE, wenn es um Codierungen. Auch wenn Sie nicht verwenden Sie es in Ihrem programm, können Sie beginnen immer ein irb1.9 Sitzung und wählen Sie auf die Saiten, um zu sehen, was die Ausgabe ist.
Datei.öffnen Sie eine neue 'mode' - parameter in Ruby 1.9. Verwenden Sie es!
Dieser Artikel hat mir sehr geholfen: http://blog.nuclearsquid.com/writings/ruby-1-9-encodings
Spaß haben und schwören eine Menge!
Wenn Sie möchten, konvertieren Sie eine Datei mit dem Namen win1252file, auf einem unix-OS, run:
Sollten Sie wahrscheinlich in der Lage sein, dasselbe zu tun unter Windows mit cygwin.
Wenn Sie NICHT auf Ruby 1.9 und unter der Annahme yhager's Befehl funktioniert, könnten Sie versuchen,