PowerShell で BOM なしでエンコードする
この記事では、バイトオーダーマーク (BOM
) を使用せずにファイルを作成または操作するときに、UTF-8
エンコーディングを使用する方法を学びます。 この記事では、さまざまなサンプル コードを使用して、文字列変数とファイルを操作する 2つの方法を学習します。 しかし、まず、UTF-8
エンコーディング システムを理解することから始めましょう。
UTF-8
エンコーディング システム
Windows 環境では、UTF-8
でのエンコードがデフォルトです。 また、これは Windows PowerShell の既定です。 UCS Transformation Format 8
としても知られる UTF-8
は、あらゆるコンピューター システムで最も広く使用されている一般的な文字エンコーディングです。
このエンコーディング システムでは、各文字は 1
から 4
バイトで表され、ASCII
と下位互換性があり、任意の標準文字を表すことができます。 ただし、ファイルを作成するときに UTF-8
を使用したくない場合は、それも可能です。
次に、BOM
を使用せずにファイルを作成または操作するときに、UTF-8
エンコーディングを使用する方法を見ていきます。
BOM
なしで文字列をエンコードする
以下は、BOM
エンコーディングを使用せずに文字列をエンコードする例です。 たとえば、以下のコード フェンスを参照してください。
コード例:
$MyRawString = "It is a text."
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines("G:\PowerShell\out.txt", $MyRawString, $Utf8NoBomEncoding)
上記の例では、最初に単純なテキストを含む文字列を宣言します。 その後、$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
という行で UTF-8
エンコーディングを使用する際に BOM
を無効にしました。
最後に、すべての行を書き直して、テキスト ファイルとして出力します。 上記で共有したスクリプトを実行すると、出力テキスト ファイル内に以下の内容が表示されます。
出力:
It is a text.
BOM
なしでテキスト ファイルをエンコードする
次の内容のテキスト ファイル (sample.txt
) があるとします。
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.
以下は、BOM
エンコーディングを使用せずにテキスト ファイルをエンコードする例です。 この例のコードは次のようになります。
$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)
まず、テキスト ファイルのデータを保持する変数を宣言しました。 次に、テキスト ファイルからデータを抽出するために、PowerShell の組み込みキーワード Get-Content
を使用しました。
その後、$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
という行で UTF-8
エンコーディングを使用する際に BOM
を無効にしました。
最後に、すべての行を書き直して、テキスト ファイルとして出力します。 上記のスクリプトを実行すると、出力テキスト ファイル (out.txt
) 内に以下の内容が取得されます。
出力:
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.
ここで共有されているサンプル コードは、Windows PowerShell 環境でのみ実行可能であることに注意してください。
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