Windows 版 GnuPG 2.2.29 の出力の一部が文字化けする問題

日本語環境の 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」表記に変更することができた。

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