2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Powershellコマンド結果書き出しファイルの文字化け:'Out-File:Encoding'にエンコード設定で解決

Last updated at Posted at 2022-03-24

はじめに

Microsoft Windows Powershell(以下Powershell)コマンドの実行結果をIOリダイレクトでファイルに書き出すことはよくあります。この時書き出したファイルはデフォルト状態のエンコーディングであるBOM付きUNICODE(UTF-16)で出力されます。これが場合によっては文字化けする場合があります。

そこで、ここでは、Powershellコマンドでのファイル書き出しで文字化けをさせない方法をご紹介します

結論

Powershellコマンドの実行前に以下のコマンドで文字化けしないエンコードを設定してください。

Powershellのファイル出力エンコードを設定するコマンド
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
  • Powershellのデフォルトパラメータ値セット$PSDefaultParameterValuesのファイル出力エンコードOut-File:Encodingパラメータに文字化けしないエンコードを設定します
  • ここではUTF-8エンコードを設定するために設定値をutf8としています

経緯

文字化けする例

TypeScript実行環境Denoで動作するアプリのログをマークダウンファイルに書き出す以下のようなコマンドでマークダウンファイルが文字化けしました。

文字化けが発生したPowershellコマンドの例
deno run -A --unstable .\app.ts > ./output/sample.md

やりたかったこと

出力したマークダウンファイルはそのままWikiサービスでWebブラウザに表示させる必要があります。ですので、ファイルのエンコードはUTF-8であってほしかったのです

でも実際は・・

しかし、実際にはUTF-16で出力されて見事に文字化けしてしまいました。Google検索でいろいろな方法が紹介されていましたが、どれもわたしの場合には失敗しました。そこでようやくたどりついたのがこの記事でご紹介している方法です

成功したコマンド

文字化けしないPowershellコマンドの例
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
deno run -A --unstable .\app.ts > ./output/sample.md
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?