Mojo_Dodo
Anmeldungsdatum: 31. Januar 2008
Beiträge: 212
|
Hallo, ich habe eine Reihe von csv-Datein mit denen einige Leute mit Microsoft Excel arbeiten müssen. Nun lassen sich manche davon problemlos in Excel importieren (test2), manche nicht (test1). | file -i test/iconf/*
test/csv-test1.csv: text/plain; charset=us-ascii
test/csv-test2.csv: text/plain; charset=utf-16le
|
Da ich vermute, dass es an den Zeichensätzen liegt habe ich folgendermaßen versucht die Dateien die Probleme machen an jene anzupassen bei denen alles gut funktioniert. Jedoch ohne erfolg: | iconv -f us-ascii -t utf-16le test/csv-test1.csv -o test/output.csv
|
| file -i test/output.csv
test/iconf/output.csv: application/octet-stream; charset=binary
|
Hat jemand eine Idee? Ich habe zwei Beispieldateien mal angehängt (test1 ist "schlecht", test2 "gut"). Sicher kennt sich da jemand besser aus als ich.
- csv-test1.ksh (72 Bytes)
- Download csv-test1.ksh
- csv-test2.ksh (146 Bytes)
- Download csv-test2.ksh
|
Dakuan
Anmeldungsdatum: 2. November 2004
Beiträge: 6345
Wohnort: Hamburg
|
Ich bin von den beiden Dateien etwas verwirrt, da sie komplett unterschiedlichen Inhalt haben (formal gesehen). Also test1 würde ich für eine normale Textdatei halten. Sie enthält ASCII Strings die Zahlen darstellen sowie TAB und CR/LF Sequenzen. Test2 erscheint auf den ersten Blick wie eine Binärdatei. Sie enthält einzelne ASCII Zeichen (Zahlen) gefolgt von Null Bytes. Ausserdem beginnt die Datei mit der Byte Sequenz 0xFF,0xFE was für mich wie eine Byte Order Mark aussieht. Ich vermute das ist eine UTF-16 Codierung, d.h. alle Zeichen sind als 16 Bit Werte codiert. Einen besonderen Grund dafür kann ich allerdings nicht erkennen, da nur Zahlen und Kommata auftreten. Vielleicht hilft das ja schon.
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Ja, genau. Offenbar sind die bescheuerten Systeme Deiner Kollegen alle auf utf-16 eingestellt, und dann will Excel die Daten offenbar partout in dieser Codierung haben. Voila: track@lucid:~$ hd /tmp/76*1.ksh
00000000 34 30 30 30 2c 30 30 30 30 30 30 09 31 30 30 2c |4000,000000.100,| # Originaldatei 1 - ASCII
00000010 37 32 33 38 35 30 0d 0a 33 39 39 39 2c 30 30 30 |723850..3999,000|
00000020 30 30 30 09 31 30 30 2c 37 32 36 35 38 37 0d 0a |000.100,726587..|
00000030 33 39 39 38 2c 30 30 30 30 30 30 09 31 30 30 2c |3998,000000.100,|
00000040 37 33 30 30 37 32 0d 0a |730072..|
track@lucid:~$ hd /tmp/76*2.ksh
00000000 ff fe 34 00 30 00 30 00 30 00 2c 00 30 00 30 00 |..4.0.0.0.,.0.0.| # Originaldatei 2 - utf-16
00000010 30 00 30 00 30 00 30 00 09 00 31 00 30 00 30 00 |0.0.0.0...1.0.0.|
00000020 2c 00 37 00 32 00 33 00 38 00 35 00 30 00 0d 00 |,.7.2.3.8.5.0...|
00000030 0a 00 33 00 39 00 39 00 39 00 2c 00 30 00 30 00 |..3.9.9.9.,.0.0.|
00000040 30 00 30 00 30 00 30 00 09 00 31 00 30 00 30 00 |0.0.0.0...1.0.0.|
00000050 2c 00 37 00 32 00 36 00 35 00 38 00 37 00 0d 00 |,.7.2.6.5.8.7...|
00000060 0a 00 33 00 39 00 39 00 38 00 2c 00 30 00 30 00 |..3.9.9.8.,.0.0.|
00000070 30 00 30 00 30 00 30 00 09 00 31 00 30 00 30 00 |0.0.0.0...1.0.0.|
00000080 2c 00 37 00 33 00 30 00 30 00 37 00 32 00 0d 00 |,.7.3.0.0.7.2...|
00000090 0a 00 |..|
track@lucid:~$ iconv -f ascii -t utf-16 /tmp/76*1.ksh | hd
00000000 ff fe 34 00 30 00 30 00 30 00 2c 00 30 00 30 00 |..4.0.0.0.,.0.0.| # Nach dem Konvertieren
00000010 30 00 30 00 30 00 30 00 09 00 31 00 30 00 30 00 |0.0.0.0...1.0.0.| # ist Datei 1 mit 2 identisch
00000020 2c 00 37 00 32 00 33 00 38 00 35 00 30 00 0d 00 |,.7.2.3.8.5.0...|
00000030 0a 00 33 00 39 00 39 00 39 00 2c 00 30 00 30 00 |..3.9.9.9.,.0.0.|
00000040 30 00 30 00 30 00 30 00 09 00 31 00 30 00 30 00 |0.0.0.0...1.0.0.|
00000050 2c 00 37 00 32 00 36 00 35 00 38 00 37 00 0d 00 |,.7.2.6.5.8.7...|
00000060 0a 00 33 00 39 00 39 00 38 00 2c 00 30 00 30 00 |..3.9.9.8.,.0.0.|
00000070 30 00 30 00 30 00 30 00 09 00 31 00 30 00 30 00 |0.0.0.0...1.0.0.|
00000080 2c 00 37 00 33 00 30 00 30 00 37 00 32 00 0d 00 |,.7.3.0.0.7.2...|
00000090 0a 00 |..| LG, track
|
Mojo_Dodo
(Themenstarter)
Anmeldungsdatum: 31. Januar 2008
Beiträge: 212
|
Danke euch beiden für die Antworten. track schrieb: Offenbar sind die bescheuerten Systeme Deiner Kollegen alle auf utf-16 eingestellt, und dann will Excel die Daten offenbar partout in dieser Codierung haben.
Wenn Daten von unterschiedlichsten Programmen auch noch auf vielen Systemen erstellt und exportiert wurden führt das häufiger mal zu einem Durcheinander. Das habe ich jetzt schon mehrmals erlebt. Und Microsoft Excel ist nochmal ein anderes Thema 😕 ... Ich kenne mich mit Zeichenkodierungen leider nicht aus, deshalb hatte ich einfach genau die Formate verwendet die mit file -i anzeigte. Mit
| iconv -f ascii -t utf-16 test/csv-test1.csv -o test/output.csv
|
funktioniert es jeden Fall. Vielen Dank!
|