2016-04-08 15 views
2

Ich habe mit Perl eine Tabelle aus unserer Datenbank AS/400 DB2 importiert.Konvertierung von EBCDIC zu UTF8 unter Linux

Das Problem ist, dass die Zeichenfolge in EBCDIC Latin-1 (italienische Sprache) codiert sind.

Wie kann ich die resultierende Datei in Linux Bash in einfache Utf-8 konvertieren?

Antwort

0

Es ist einfach mit iconv.

iconv -f ISO8859-1 -t "UTF-8" result.csv -o new_result.csv 

ISO8859-1 ist das Latin-1-Codierungsformat. Eine Liste der Codierungen finden Sie in dieser Tabelle in der offiziellen IBM Dokumentation: https://www.ibm.com/support/knowledgecenter/ssw_aix_53/com.ibm.aix.nls/doc/nlsgdrf/iconv.htm%23d722e3a267mela

Beachten Sie, dass die Konvertierung möglicherweise ungültige UTF-8-Zeichen von EBCDIC zurücklässt. Ein Beispiel sind NULL-Zeichen in den Strings. Um dies zu vermeiden, verwenden Sie einen HEX-Editor und ersetzen Hexadezimalwerte von 00 bis 20 (Leerzeichen).

3

beginnt mit

iconv -f EBCDIC-IT -t utf-8 <filename> 

dann die Ausgabe überprüfen, und wenn es nicht ganz richtig ist, überprüft man iconv und die verfügbaren Kodierungen von iconv -l aufgeführt.

(Beachten Sie, dass "EBCDIC Latin-1" etwas seltsam ist. "Latin-1" bedeutet ISO-8859-1, während "EBCDIC" etwas ganz anderes ist. Versuchen Sie file <filename>, um eine begründete Vermutung durch den Computer zu bekommen welche Kodierung Sie tatsächlich betrachten.)