Powershell Variable wird mit falschem Encoding ausgegeben
Hallo Kollegen,
ich arbeite mich gerade in Powershell ein und habe ein Encoding (oder auch Verständnis) Problem.
PSVersion 5.1.19041.3031
Ich möchte einen XML Konverter erstellen, der bestimmte Werte ersetzt.
Ausgabe:
Alter Wert: Alte Straße 8
Neuer Wert: Neue Straße 13
Ich lese jetzt seit 2 Stunden alle möglichen Encoding Hinweise aber weiß immer noch nicht wie ich es korrigiert bekommen.
Könnte mir mal jemand aufs Pferd helfen?
Grüße vom it-frosch
ich arbeite mich gerade in Powershell ein und habe ein Encoding (oder auch Verständnis) Problem.
PSVersion 5.1.19041.3031
Ich möchte einen XML Konverter erstellen, der bestimmte Werte ersetzt.
# XML korrigieren
# ich habe versucht diesen parameter zu setzen aber keine Auswirkung
$PSDefaultParameterValues['*:Encoding'] = 'utf8'
# Standardwert festlegen
$LineOne_S="Meine Straße 13"
# XML einlesen
$xml = [xml](get-content "C:\datei.xml")
# Originalwert sichern
$LineOne=$xml.CrossIndustryInvoice.SupplyChainTradeTransaction.ApplicableHeaderTradeAgreement.SellerTradeParty.PostalTradeAddress.LineOne
# Standardwert in XML setzen
$xml.CrossIndustryInvoice.SupplyChainTradeTransaction.ApplicableHeaderTradeAgreement.SellerTradeParty.PostalTradeAddress.LineOne=$LineOne_S
Write-Host
"
Alter Wert: $LineOne
Neuer Wert: $LineOne_S
"
Ausgabe:
Alter Wert: Alte Straße 8
Neuer Wert: Neue Straße 13
Ich lese jetzt seit 2 Stunden alle möglichen Encoding Hinweise aber weiß immer noch nicht wie ich es korrigiert bekommen.
Könnte mir mal jemand aufs Pferd helfen?
Grüße vom it-frosch
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7627701796
Url: https://administrator.de/contentid/7627701796
Ausgedruckt am: 21.11.2024 um 11:11 Uhr
17 Kommentare
Neuester Kommentar
Moin
Dann wird das Encoding durch den XML Parser und aus der XML Deklaration richtig erkannt.
Ansonsten Get-Content das korrekte Encoding der Datei mitgeben
Und natürlich sicherstellen, dass die Skript -Datei selbst auch im UTF8 Encoding gespeichert ist.
Zeppel
$xml = [xml](get-content "C:\datei.xml")
Ein oft gemachter Fehler um XML-Dateien einzulesen ohne das Encoding Get-Content mitzugeben ... XML Files am bester so einlesen$xml = New-Object XML
$xml.Load("C:\datei.xml")
Ansonsten Get-Content das korrekte Encoding der Datei mitgeben
$xml = [xml](get-content "C:\datei.xml" -Encoding UTF8)
Zeppel
Hi.
Für den
zu Beginn deines Scriptes folgendes einfügen:
ansonsten was @7426148943 schrieb (Ausgabe als XML)
Gruß
Für den
Write-Host
zu Beginn deines Scriptes folgendes einfügen:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
ansonsten was @7426148943 schrieb (Ausgabe als XML)
Gruß
Dann ist deine Skript-Datei fehlerhaft. Schau mal ob die mit oder ohne BOM gesichert ist
Aua, so ein Mischmasch an Editoren, "never use the classic notepad if you don't know what you are doing" . Wie vermutet .
Ohne BOM im Header gibts nämlich bei Powershell meistens genau diese Encoding-Probleme wenn Sonderzeichen außerhalb des ASCII satzes verwendet werden ...
Woran bzw. wie sehe ich das?
An den ersten 3 Bytes der Datei., die dann lauten EF BB BF in HEX bei UTF8.Ohne BOM im Header gibts nämlich bei Powershell meistens genau diese Encoding-Probleme wenn Sonderzeichen außerhalb des ASCII satzes verwendet werden ...
Führe deinen Code doch mal direkt in der ISE aus. Bei mir funktioniert das alles problemlos.
Normalerweise zieht Powershell auch die Kodierung vom OS. Ist da vielleicht was verbogen?
Aber kipp deinen Code einfach mal in die Powershell ISE ein und lass es da mal laufen.
Gruß
Normalerweise zieht Powershell auch die Kodierung vom OS. Ist da vielleicht was verbogen?
Woran bzw. wie sehe ich das?
Deine XML/deine PS-File mal im Notepad++ aufmachen und schauen was da hinterlegt ist:Aber kipp deinen Code einfach mal in die Powershell ISE ein und lass es da mal laufen.
Gruß
Ja, speichere mit BOM in UTF8 und schon lüppt dat ... Brauchst nur einmal mit und einmal ohne BOM speichern dann siehst du den Unterschied .
Was zum Lesen
https://learn.microsoft.com/de-de/powershell/module/microsoft.powershell ...
p.s. kannst du bitte immer nur ein Kommentar schreiben und nciht x hintereinander?! Das nervt gewaltig.
https://learn.microsoft.com/de-de/powershell/module/microsoft.powershell ...
p.s. kannst du bitte immer nur ein Kommentar schreiben und nciht x hintereinander?! Das nervt gewaltig.