Test Encoding Issue
Zuletzt geändert: 27.08.2026 08:07

Übersicht

Test-EncodingIssue #

ÜBERSICHT #

Prüft eine Datei auf Unicode-Encoding-Fehler wie Mojibake oder Ersetzungszeichen.

SYNTAX #

Test-EncodingIssue [-Path] <string> [<CommonParameters>]

BESCHREIBUNG #

Liest die angegebene Datei byteweise ein und analysiert den Inhalt auf zwei Kategorien von Encoding-Problemen:

  1. U+FFFD Replacement Characters (Rauten mit Fragezeichen) – entstehen, wenn ungültige Byte-Sequenzen als UTF-8 interpretiert werden.

  2. Mojibake (doppelt-kodiertes UTF-8) – entsteht, wenn eine bereits als UTF-8 gespeicherte Datei erneut von Latin-1/ANSI nach UTF-8 konvertiert wird. Typisches Symptom: ä statt ä, ö statt ö, ü statt ü. (encoding-ignore)

Gibt $true zurück, wenn keine Probleme gefunden wurden, und $false bei Encoding-Fehlern. Die gefundenen Problemstellen werden über Write-Warning mit Zeilennummer, Fehlertyp und Vorschau ausgegeben.

Absichtliche Beispiele ausnehmen #

Manche Dateien zitieren kaputte Zeichen mit Absicht – etwa eine Fehlermeldung, die zeigt, wie Mojibake aussieht (“aus ä wird ä” – encoding-ignore). Das ist kein Fehler, würden hier aber anschlagen. Eine Zeile, die den Marker encoding-ignore enthält, wird deshalb übersprungen. Der Marker wird ohne Rücksicht auf Gross-/Kleinschreibung gesucht und ist bewusst kommentar-syntax-neutral, damit er in .ps1 (#), .pas (//) und .md gleich funktioniert.

PARAMETER #

-Path #

Type: string

Pfad zur zu prüfenden Datei.

BEISPIELE #

Test-EncodingIssue -Path .\MeinScript.ps1

Prüft die Datei auf Encoding-Fehler. Gibt $true zurück wenn alles in Ordnung
ist, $false wenn Probleme gefunden wurden.
# In der geprüften Datei:
Write-Host "aus 'ä' wird 'ä'"   # encoding-ignore: absichtliches Beispiel

Die Zeile zeigt die kaputte Form mit Absicht und wird durch den Marker
nicht als Encoding-Fehler gemeldet.
Get-ChildItem *.ps1 | ForEach-Object { if (-not (Test-EncodingIssue -Path $_.FullName)) { $_.Name } }

Prüft alle ps1-Dateien im aktuellen Verzeichnis und listet diejenigen auf,
die Encoding-Fehler enthalten.