PowerShell で BOM なしでエンコードする

MD Aminul Islam 2023年6月20日
  1. UTF-8 エンコーディング システム
  2. BOM なしで文字列をエンコードする
  3. BOM なしでテキスト ファイルをエンコードする
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 環境でのみ実行可能であることに注意してください。

著者: MD Aminul Islam
MD Aminul Islam avatar MD Aminul Islam avatar

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