Codieren Sie ohne BOM in PowerShell
In diesem Artikel erfahren Sie, wie Sie die UTF-8
-Kodierung verwenden, wenn Sie Dateien erstellen oder mit ihnen arbeiten, ohne die Byte-Order-Marke (BOM
) zu verwenden. In diesem Artikel werden wir verschiedene Beispielcodes verwenden, um zwei Methoden zu lernen, die mit String-Variablen und Dateien arbeiten. Beginnen wir jedoch zunächst damit, das Codierungssystem UTF-8
zu verstehen.
das UTF-8
Kodierungssystem
Die Kodierung mit UTF-8
ist die Standardeinstellung in der Windows-Umgebung. Außerdem ist es ein Standard in Windows PowerShell. Das UTF-8
, auch bekannt als UCS Transformation Format 8
, ist die am weitesten verbreitete und beliebteste Zeichenkodierung für jedes Computersystem.
In diesem Kodierungssystem wird jedes Zeichen durch 1
bis 4
Bytes dargestellt, und es ist abwärtskompatibel mit ASCII
und kann jedes Standardzeichen darstellen. Aber wenn wir beim Erstellen einer Datei nicht UTF-8
verwenden möchten, können wir das auch tun.
Jetzt werden wir sehen, wie man die UTF-8
-Kodierung verwendet, wenn man Dateien erstellt oder mit ihnen arbeitet, ohne BOM
zu verwenden.
Kodiere einen String ohne BOM
Unten sehen Sie ein Beispiel, in dem wir eine Zeichenfolge ohne Verwendung der BOM
-Codierung codieren. Sehen Sie sich zum Beispiel den Codezaun unten an.
Beispielcode:
$MyRawString = "It is a text."
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines("G:\PowerShell\out.txt", $MyRawString, $Utf8NoBomEncoding)
Im oben geteilten Beispiel deklarieren wir zunächst einen String mit einem einfachen Text. Danach haben wir das BOM
beim Arbeiten mit der UTF-8
-Kodierung durch die Zeile $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
deaktiviert.
Zuletzt schreiben wir alle Zeilen neu und geben sie als Textdateien aus. Nach dem Ausführen des oben freigegebenen Skripts erhalten wir den folgenden Inhalt in der Ausgabetextdatei.
Ausgang:
It is a text.
Codieren Sie eine Textdatei ohne BOM
Angenommen, wir haben die Textdatei (sample.txt
) mit folgendem Inhalt:
It is the first line.
It is the second line.
It is the third line.
It is the fourth line.
It is the fifth line.
Unten sehen Sie ein Beispiel, in dem wir eine Textdatei ohne die Verwendung der BOM
-Codierung codieren. Der Code für unser Beispiel sieht wie folgt aus.
$MyRawString = Get-Content -Raw "G:\PowerShell\sample.txt"
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines("G:\PowerShell\out.txt", $MyRawString, $Utf8NoBomEncoding)
Zuerst haben wir eine Variable deklariert, die die Daten aus der Textdatei enthält. Um die Daten aus der Textdatei zu extrahieren, haben wir dann das eingebaute Schlüsselwort von PowerShell verwendet, nämlich Get-Content
.
Danach haben wir das BOM
beim Arbeiten mit der UTF-8
-Kodierung durch die Zeile $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
deaktiviert.
Zuletzt schreiben wir alle Zeilen neu und geben sie als Textdateien aus. Nach dem Ausführen des oben freigegebenen Skripts erhalten wir den folgenden Inhalt in der Ausgabetextdatei (out.txt
).
Ausgang:
It is the first line.
It is the second line.
It is the third line.
It is the fourth line.
It is the fifth line.
Bitte beachten Sie, dass die hier freigegebenen Beispielcodes nur in der Windows PowerShell-Umgebung ausführbar sind.
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn