日本語ファイルの入出力

前提

  • PowerShellの内部エンコーディングはUTF16。
  • PowerShellが自動判別して読み込めるエンコーディングは、UTF16、SJIS、UTF8(BOMあり)。
    • 入力元のテキストファイルがどうであれ、読み込み時にUTF16へ変換される。
  • PowerShellがファイルを出力する際の既定のエンコーディングはUTF16。
    • すなわち、ファイル書き出しコマンドレットや">" によるリダイレクトでのファイル出力時。
  • 日本語WindowsのPowerShellコンソールソフト(コマンドプロンプト)の既定のエンコーディングはSJIS。
  • いったんPowerShellが正しくテキストを認識すればコンソール上での表示は自動的にSJISへ変換されるので気にする必要はない。

UTF8のテキストファイルを出力

 PS> $PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
 PS> echo "あいうえお" > utf8-bom.txt

または

 PS> echo "あいうえお" | Out-File -Encoding utf8 utf8-bom.txt
  • ">"を使ったリダイレクトはPowerShell バージョン5.1以降で有効
  • 出力されるUTF8はBOM付きなので、一般的なUNIX系のコマンドはBOMを処理できないことが多い

UTF8のテキストファイルを入力

 PS> Get-Content utf8-bom.txt
 あいうえお
  • BOMありUTF8、UTF16、SJISは自動判定される

BOMなしのUTF8のファイルを入力

 PS> Get-Content utf8-nobom.txt -Encoding UTF8
 あいうえお
  • BOMなしのUTF8は-Encoding UTF8でエンコーディングを明示する

参考

https://stackoverflow.com/questions/40098771/changing-powershells-default-output-encoding-to-utf-8


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2020-05-09 (土) 07:56:26