【Ansible Tower/AWX】バッチファイルで日本語が文字化けした時の対処方法


この記事はプロモーションを含みます。

Ansible(AWX/Tower)環境で、Windowsホストに実行したバッチファイルの日本語文字列が文字化けした場合の対処方法について解説します。

プレイブック

まずは、テスト用のバッチを実行する際に使用したプレイブックをご紹介します。
以降は、バッチファイルを見ながら、文字化けの回避方法を解説していきたいと思います。

---
- hosts: all
  gather_facts: False
  tasks:

  - name: "バッチファイル実行①"
    win_command: "C:\\ws\\Test_Shift-JIS.bat"

  - name: "バッチファイル実行②"
    win_command: "C:\\ws\\Test_UTF-8_01.bat"

  - name: "バッチファイル実行③"
    win_command: "C:\\ws\\Test_Shift-JIS_02.bat"

このプレイブックでは、作成したバッチファイルを実行しているだけですね。

バッチファイル

実行したバッチファイルと実行結果を確認していきます。

文字化けするバッチファイル(Test_Shift-JIS.bat)

Windowsのメモ帳などのテキストエディタでバッチを作成した際、特に設定をしなければ文字コードが「Shift-JIS(SJIS)」となると思います。
下記のバッチファイルは、文字コード「Shift-JIS」で保存したものになります。

@echo off

cd %~dp0

echo Ansible AWX バッチ実行テスト> .\Test_Shift-JIS.log

exit

Ansible AWXから実行され、出力されたファイル「Test_Shift-JIS.log」を確認してみます。
下記のように、日本語部分が文字化けしています。

Ansible AWX �o�b�`���s�e�X�g

バッチファイルを直接実行すると下記のように出力されます。

Ansible AWX バッチ実行テスト

文字化けせず、正しく出力されました。

では、何故、Ansible AWXから実行すると文字化けするのでしょうか?

それは、コマンドプロンプト経由、またはバッチファイルを直接実行した場合と、Ansible AWXから実行した場合のデフォルトの文字コードが下記のようになっているからです。

・コマンドプロンプト/バッチファイルを直接実行 → Shift-JIS(SJIS)
・Ansible AWX/Tower から実行 → UTF-8

では、これらを踏まえて、Ansible AWX環境でも文字化けしないバッチを見ていきたいと思います。

コマンドプロンプト(バッチファイル)で文字コードを確認する時は「chcp」コマンドを使います。
使用方法は下記にまとめていますので、合わせてご覧ください。

文字化けしないバッチファイル①(Test_UTF-8_01.bat)

バッチファイルの文字コード自体を「UTF-8」にすることで文字化けを回避出来ます。

下記のようにプログラムは同じ(出力ログ名は変えています)ですが、文字コードが「UTF-8」になっています。

@echo off

cd %~dp0

echo Ansible AWX バッチ実行テスト> .\Test_UTF-8_01.log

exit

このバッチを実行結果として出力されたファイル「Test_UTF-8_01.log」を確認してみます。

Ansible AWX バッチ実行テスト

文字化けしていませんね。このようにバッチファイル自体の文字コードを適切に変更することで文字化けを回避することが可能です。

文字化けしないバッチファイル②(Test_Shift-JIS_02.bat)

実行したバッチファイル内で文字コードを変更することで文字化けの回避が可能です。

下記のように、echoコマンドで文字列を出力する前に、chcpコマンドで文字コードを「Shift-JIS」に変更しています。

@echo off

cd %~dp0

chcp 932

echo Ansible AWX バッチ実行テスト> .\Test_Shift-JIS_02.log

exit

このバッチを実行結果として出力されたファイル「Test_Shift-JIS_02.log」を確認してみます。

Ansible AWX バッチ実行テスト

文字化けしていませんね。このようにバッチファイル中の処理で文字コードを適切に変更することで文字化けを回避することが可能です。

記事は以上です。本記事を参考に文字化けしないバッチファイルを組んでみて下さい。

コメント

タイトルとURLをコピーしました