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"
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
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?
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"
Ich bekomme die csv's utf8 (ohne bom), da stimmt alles. Nachdem vergleichen etc ist in der Enddatei, naja nix mehr so richtig
Wie kann ich die Powershell dazu übereden, daß sie in die Codierung nicht eingreift oder welche andere Möglichkeiten habe ich?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 388390
Url: https://administrator.de/forum/powershell-csv-sonderzeichen-388390.html
Ausgedruckt am: 09.04.2025 um 18:04 Uhr
8 Kommentare
Neuester Kommentar
Moin,
Leider verstehe ich überhaupt nicht, was "interessante Werte" und "nicht mehr so richtig" sein soll.
Gruß
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: Wie kann ich die Powershell dazu übereden, daß sie in die Codierung nicht eingreift oder welche andere Möglichkeiten habe ich?
[IO.File]::WriteAllLines($filename, $content)
Gruß

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
.
#Importieren
$a = Import-CSV .\test.csv -Delimiter ";" -Encoding UTF8
$b = Import-CSV .\test2.csv -Delimiter ";" -Encoding UTF8
# Vergleich und erstellen einer Datei
Compare $a $b -Property Spalte2,Spalte3,Spalte4 -IncludeEqual -ExcludeDifferent -PassThru | select Spalte1,Spalte2,Spalte3,Spalte4 | Export-CSV .\c.csv -Delimiter ";" -NoTypeInformation -Encoding UTF8

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

?? 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.
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.