Windows7 32bitで確認。コントロールパネルの「地域と言語」↓ で「形式」を日本語以外にすると
↓ こんな感じ。PostgreSQL 9.3のpsqlの例です。前のブログに書いたWindows版PostgreSQL 9.4固有の文字化けとは関係なく、9.4でのintl.dll差し替えの有無とも関係なかったです。
地域と言語を日本語以外にしても ↓ DIRなど標準コマンドの日本語表示は変わらない模様。
対策は簡単。↓ 地域と言語を開いて(コントールパネルから、または「ファイル名を指定して実行」でintl.cplを指定)形式を日本語に戻すだけ。
ヘルプが文字化けのままでも、クエリは可能
Windowsの「地域と言語」を英語のままにして、ヘルプの文字化けは気にせず使ってみた例。↓ 接続時のメッセージや(ここではサーバのバージョンの方が上という警告)、パスワード要求される場合はそれも文字化けしますが、接続自体は可能。
↓ ただしclient_encodingがShift JISでなく、ここではWIN1252に変わってました(「地域と言語」を英語にしたから)。コンソールの文字コードはShift JISなので、日本語を使う一部のクエリはエラーになりますが、psqlのコマンド\encoding sjisを打てば元どおり。
↓ 「地域と言語」が日本語なら、最初からclient encodingは正しくShift JISでした。
わざわざWindowsの「地域と言語」を日本語以外にしない限り起きないので、今ごろ気付きました。実は少し前、タスクバーから日本語の曜日表示を消したくて「地域と言語」を英語にし、しばらく後にpsqlのヘルプの文字化けに気付いたものの原因が思い当たらず「まぁクエリが通るからいいや」と放置してたという…。
で、つい最近さらに「地域と言語」の設定を調べたら日本語のままでも曜日表示を消せることが分かり、そうしたらpsqlの文字化けが直ったので「原因はコレか」と。このWindowsタスクバーの曜日表示について、psqlとは無関係ですが意外に情報がなかったので、明日書きます。