Wie kann ich eine Zeichenfolge von Windows-1252 nach utf-8 in Ruby konvertieren?

8

Ich migriere einige Daten von MS Access 2003 nach MySQL 5.0 mit Ruby 1.8.6 unter Windows XP (schreibe eine Rake-Aufgabe, um dies zu tun).

Es stellt sich heraus, dass die Windows-String-Daten als Windows-1252 codiert sind und Rails und MySQL beide utf-8-Eingaben annehmen, so dass einige der Zeichen, wie Apostrophe, fehlerhaft werden. Sie enden als "a" s mit einem Akzent über sie und solche Sachen.

Kennt jemand ein Werkzeug, eine Bibliothek, ein System, eine Methode, ein Ritual, einen Zauberspruch oder eine Beschwörung, um eine Windows-1252-Zeichenfolge in utf-8 zu konvertieren?

    
Ethan 04.06.2009, 17:12
quelle

5 Antworten

10

Für Ruby 1.8.6 scheint es, dass Sie Ruby Iconv als Teil der Standardbibliothek verwenden können:

Iconv Dokumentation

Nach diesem hilfreichen Artikel scheint es so, als könnten Sie Lege so wenig unerwünschte Win-1252-Zeichen aus Deinem String weg wie:

%Vor%

Man könnte dann versuchen, eine vollständige Umwandlung wie folgt durchzuführen:

%Vor%     
austinfromboston 09.06.2009, 07:15
quelle
9

Wenn Sie auf Ruby 1.9 sind ...

%Vor%     
James A. Rosen 04.06.2009 17:27
quelle
3

Hy,

Ich hatte genau das gleiche Problem.

Diese Tipps haben mir geholfen zu gehen:

Achten Sie immer auf den richtigen Namen, um Ihre Konvertierungstools korrekt zu füttern. Im Zweifel können Sie eine Liste der unterstützten Kodierungen für iconv oder recode erhalten mit:

%Vor%

oder

%Vor%

Beginne immer mit deiner Originaldatei und kodiere ein Sample, mit dem du arbeiten kannst:

%Vor%

oder

%Vor%

Installieren Sie Ruby1.9, weil es Ihnen viel hilft, wenn es um Kodierungen geht. Selbst wenn Sie es nicht in Ihrem Programm verwenden, können Sie immer eine irb1.9-Sitzung starten und die Strings auswählen, um zu sehen, was die Ausgabe ist. File.open hat einen neuen Modus-Parameter in Ruby 1.9. Benutze es! Dieser Artikel hat sehr geholfen: Ссылка

%Vor%

Viel Spaß und viel schwören!

    
Overbryd 24.06.2009 17:06
quelle
2

Wenn Sie eine Datei namens win1252file auf einem Unix-Betriebssystem konvertieren möchten, führen Sie Folgendes aus:

%Vor%

Sie sollten wahrscheinlich unter Windows mit cygwin dasselbe machen können.

    
yhager 04.06.2009 17:29
quelle
2

Wenn Sie in Ruby 1.9 NICHT sind und yhager der Befehl funktioniert, könnten Sie

versuchen %Vor%     
James A. Rosen 04.06.2009 18:14
quelle