franz-josef-ii
Goto Top

Powershell - csv - Sonderzeichen

Einen wunderschönen arbeitsreichen Tag

Ich bin gerade dabei csv-Dateien mittels Powershell zu vergleichen und Unterschiede bzw Gemeinsamkeiten abzuspeichern. Mein Problem dabei ist, ok sind die "fremdländischen Zeichen" face-wink Die Umlaute funktionieren, die habe ich im Griff, es geht z.B. um die "tschechischen Hatscheks", also das c mit dem Hakerl drauf oder auch andere Buchstaben die ein Apostroph drüber haben.

Ich bekomme die csv's utf8 (ohne bom), da stimmt alles. Nachdem vergleichen etc ist in der Enddatei, naja nix mehr so richtig face-wink Ich habe sowohl mit out-file also auch mit export-csv herumexperimentiert, gc und sc ....... alles was das Internet so halt geboten hat. Als Ergebnis hatte ich entweder eine utf8-bom oder eine ucs-2 le bom mit "interessanten" Werten.

Wie kann ich die Powershell dazu übereden, daß sie in die Codierung nicht eingreift oder welche andere Möglichkeiten habe ich?

Content-Key: 388390

Url: https://administrator.de/contentid/388390

Printed on: March 27, 2023 at 11:03 o'clock

Member: MarkBeaker
MarkBeaker Oct 03, 2018 at 13:37:17 (UTC)
Goto Top
Hallo,

kannst du den Code bitte posten.

Danke
Member: Kraemer
Kraemer Oct 04, 2018 at 07:08:02 (UTC)
Goto Top
Moin,
Zitat von @Franz-Josef-II:
Wie kann ich die Powershell dazu übereden, daß sie in die Codierung nicht eingreift oder welche andere Möglichkeiten habe ich?
die Powershell greift nicht in die Codierung ein! Sie liest die Daten ja anscheinend korrekt. Export-CSV kennt imho nur UTF8 mit BOM. Per .net solltest du eine Lösung bauen können:
Leider verstehe ich überhaupt nicht, was "interessante Werte" und "nicht mehr so richtig" sein soll.

Gruß
Member: Franz-Josef-II
Franz-Josef-II Oct 04, 2018 updated at 11:49:09 (UTC)
Goto Top
Hat jetzt ein bißchen gedauert, die Echtdaten kommen nicht so gut an, wenn ich die öffentlich ..... face-wink

Also die Ursprungsdatei schaut so aus (utf8):


Jetzt importiere ich die beiden zu vergleichen csv-Dateien, vergleiche sie und speichere sie ab:


Da kommt jetzt folgendes utf8 heraus:


Also die Sonderzeichen werden durch Fragezeichen ersetzt.


Dann kommt das heraus (UCS-2 LE BOM):


Wobei ich mich jetzt ein bißchen verrannt habe, ich weiß jetzt nicht mehr, mit welchen Befehlen ich die "interessanten Zeichen" bekomme habe face-sad

Ein paar Beispiele eben dieser (es handelt sich um Namensteile, allerdings im Original sind dort keine Umlaute sondern eben die Hatscheks und Apostrophe):
Mitglied: 137289
137289 Oct 04, 2018 updated at 11:54:05 (UTC)
Goto Top
Du gibst ja auch kein Encoding beim Im- und Export an, wie soll da die Powershell automatisch das "wirklich" passende Encoding nehmen wenn die Datei kein BOM hat face-smile.
Member: Franz-Josef-II
Franz-Josef-II Oct 04, 2018 at 12:34:56 (UTC)
Goto Top
Keine Änderung face-sad Genau gleiches Verhalten
Mitglied: 137289
137289 Oct 04, 2018 updated at 12:37:50 (UTC)
Goto Top
Hier geht's. Wir haben deine Ausgangsdateien nicht ....
Member: Franz-Josef-II
Franz-Josef-II Oct 04, 2018 at 12:44:33 (UTC)
Goto Top
Zitat von @137289:

Hier geht's. Wir haben deine Ausgangsdateien nicht ....


Stimmt.


Ich denke, ich werde alles über Bord werfen und komplett von vorne wieder anfangen (und Deinen Tipp miteinbauen) face-wink Irgendwo pfuscht mir da was drein face-sad
Die letzte Datei, ist das bei Dir eine utf8 oder eine utf8 bom?
Mitglied: 137289
137289 Oct 04, 2018 updated at 14:22:05 (UTC)
Goto Top
Zitat von @Franz-Josef-II:
Die letzte Datei,
?? Meine Test-Dateiquelle war eine UTF-8 kodierte ohne BOM.
Die CMDLets geben immer eine Datei mit BOM aus, ist auch gut so, dann erkennen Programme auch gleich worum es geht! Willst du das nicht, s. Kommentar von Krämer, mit den .NET Methoden die Daten wegschreiben.