LoginSignup
0
2

More than 3 years have passed since last update.

PowerShellでOut-Fileが文字化けするときの対処法 | 新人SEの備忘録

Posted at
本記事は未解決記事です。ご了承ください。解決方法を試しながら随時編集します。
また、解決方法をコメントでいただけると大変助かります。

SEに必須のドキュメント作成を、なんとか自動化できないかと目論んでいます。
PowerShellで出力したデータをExcelのマクロで動かすために、[日付 + 日本語]で出力できるソースを開発しています。

# 年月日の情報を取得
$date = Get-Date -Format "yyyyMMdd_HHmm"

# tempフォルダを作成
New-Item C:\temp_$date\ -ItemType Directory
cd C:\temp_$date\

# ~ 中略 ~

# パッチ情報の更新日を記載
$patchdata = Get-Date -Format "yyyy/MM/dd"
"$patchdata 時点(構築時点)での最新HotFix" | out-file status.csv -Append

出力ファイルをOut-Fileコマンドを使用してCSVファイル出力すると文字化けを起こします。
Excelでも同様の文字化けを起こします。

2019/10/29 譎らせ・域ァ狗ッ画凾轤ケ・峨〒縺ョ譛€譁ーHotFix

色々調べると、メモ帳では文字コードにUTF-8(Shift-JISから移行したっぽい?)が使用されていることが問題みたいでした。
そこで、検証用のコードを作成しました。
-Encoding default でShift-JIS出力、-Encoding UTF-8 でUTF-8出力が可能です。

# 年月日の情報を取得
$date = Get-Date -Format "yyyyMMdd_HHmm"

# tempフォルダを作成
New-Item C:\temp_$date\ -ItemType Directory
cd C:\temp_$date\

# ~ 中略 ~

# パッチ情報の更新日を記載
$patchdata = Get-Date -Format "yyyy/MM/dd"
"$patchdata 時点(構築時点)での最新HotFix" | out-file status.csv -Append
"$patchdata 時点(構築時点)での最新HotFix" | out-file status.csv -Encoding default -Append
"$patchdata 時点(構築時点)での最新HotFix" | out-file status.csv -Encoding UTF-8 -Append

結果は惨敗でした。
改行をしていないのでより変になっていますが、すべての文字コードで失敗していることは分かります。

2019/10/29 譎らせ・域ァ狗ッ画凾轤ケ・峨〒縺ョ譛€譁ーHotFix
〲㤱ㄯ⼰㤲芙苧膹衅꟦覯駦릂䖁ꞁ臣肜雦䢰瑯楆൸

現在は文字化けしない手段を探しています。

0
2
1

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
0
2