AWS Systems Manager で Windows に対して Run Command を実行した結果が文字化けする時の対処方法

2020.09.20

困っていた内容

AWS マネジメントコンソールから AWS Systems Manager の Run Command を使って Windows OS で稼働している EC2 内にあるファイルの内容を表示したのですが文字化けして読めませんでした。

Run Command で指定したドキュメント名は「AWS-RunPowerShellScript」で、指定したコマンドは「cat C:\Users\Administrator\Documents\test.txt」です。 ファイルの内容は「クラスメソッド株式会社」でファイルの文字コードは「UTF-8」となります。

実行結果は、以下のように「???????????」と文字化けして表示されてしまいました。

どう対応すればいいの?

SSM エージェントがコマンドを実行する時に、現在の文字コード(コードページ)を指定することで解消できます。
具体的には実行するコマンドの前に「chcp 65001」を付けて以下のようにします。
chcp 65001; cat C:\Users\Administrator\Documents\test.txt

実行した結果は、以下のように現在のコードページが表示された後で cat コマンドの結果が表示され、文字化けはしていません。

元のテキストの文字コードが「Shift-jis」の場合は「chcp 932」となります。

参考情報

PowerShellで日本語・英語モードに切り替える方法