Windows 32bit向けPostgreSQL 9.4に付属のpsqlです。日本語表示が文字化けします。これに関して過去いくつか記事にしましたが、今日は二点補足。


Windows 64bit版では文字化けしなかった

先日のPostgreSQLカンファレンスおよびアンカンファレンスPL/Rを使う際、まだWindows + PostgreSQL 9.5ベータ版用のバイナリが配布されてないので9.4を使いました。以前はずっと32bit環境でしたが、今回からWindows 7 64bitにし、64bit用のzipを解凍してそのまま使ったら ↓ このように文字化けなし。

OS64bitなら、PostgreSQL本体とは関係なくpsqlだけ64bit版にして文字化け対策になります。今回使ったzipは下記にある9.4.5(Win x86-64)。ダウンロードファイル名はpostgresql-9.4.5-3-windows-x64-binaries.zipでした。これを解凍し、psqlがあるbinフォルダに移動してpsql --helpを実行したのが上の画像です。


余談ですが、このzipにはVisual C++のランタイムが同梱されていないので、PCに未インストールの場合は ↓ こんな風にmsvcr120.dllがないと言われます。適宜ファイルをbinフォルダに持ってくるか、下記リンクからインストールして下さい。zip内のスタックビルダを使う場合はmsvcp120.dllも必要。


とりあえず英語表示でしのぐ簡単な方法

文字化けしてるのはpsql(等のコマンドラインツール)のメッセージやヘルプだけなので、英語にして支障ない場合はそれで済ます手もあります。ただ、真っ当に行うには設定ファイルを編集したり、もしかしたらコマンドプロンプトのコードページを変える必要もあるかも知れず面倒。代わりに最近見つけたのは、日本語への翻訳ファイルがあるフォルダ名を適当に書き替えて「無いこと」にする方法。例えばこんな風に ↓share/locale/jaを別名にします。

これだけでpsqlの表示が英語になります ↓ データベースとやり取りする文字コードは無関係なので、設定がちゃんとしてれば(例えば日本語ならclient_encodingSJIS)日本語のクエリやデータ取得も普通にできるはず。