日本語環境の Windows 10 にインストールしている Windows 版 GnuPG を 2.2.26 から 2.2.29 にアップデートしたところ、 gpg --verify 等でタイムゾーンが出力される部分が文字化けするようになってしまった。
1つずつバージョンを遡りながら確認したところ、 2.2.28 以降で当該部が文字化けすることがわかった。
コードページが 932 [日本語, ANSI/OEM Japanese; Japanese (Shift-JIS)] の場合
GnuPG のバージョン | タイムゾーン部の文字化けの有無 |
---|---|
2.2.29 | 文字化け有り |
2.2.28 | 文字化け有り |
2.2.27 | 文字化け無し |
2.2.26 | 文字化け無し |
コードページを 437 [英語, OEM United States] や 65001 [Unicode (UTF-8)] に変更してみたりもしたが、日時の出力部分は変化せず、システムロケールベースになってしまう感じ。
さて、どうしたものか……。
【追記】システムロケールを日本語に設定したままでも、 Windows の表示言語を英語に変更することで、タイムゾーンの表記を「東京 (標準時)」表記から「Tokyo Standard Time」表記に変更することができた。消極的な解決方法ではあるものの、「文字化け絶対に許さない」派なら、ひとつの手ではあるのかな、と思わなくもない。
余談
今回の件で試行錯誤していて気付いたが、 2.2.28 および 2.2.29 では、コードページ 932 の状態で gpg コマンドを実行すると、実行後はコードページが 65001 に変更されるようだ。
そのため、そのまま同じコマンドプロンプトで続けて gpg コマンドを実行すると、環境変数 LANG で ja や ja_JP が設定されていない環境では、2回目以降の gpg コマンドの出力メッセージが英語に変わってしまう。
Windows 環境で環境変数 LANG を明示的に設定している人は、近頃では少ないだろうことを考えると、この挙動はあまり嬉しくないように思うが……。
もしかして、このあたりも今回の件と関連があったりするのだろうか?
追記 (2021-08-26)
環境変数 TZ に JST-09 を設定することで、タイムゾーンの表記を「東京 (標準時)」表記から「JST」表記に変更することができた。