データベースのログや開発ツールのコンソールが文字化けして、謎の記号だらけになって何が原因でエラーが出ているのかがわからず頭を抱えた経験から、備忘録として文字化けについての私の解決方法を記します。
今回は、PostgreSQLのエラーメッセージを英語表示に切り替えて、内容を読み取りやすくする方法と、合わせて遭遇しやすいEclipseの文字化け回避ポイントを記録します。
1. PostgreSQLのエラー文字化けを直す
日本語でエラーを表示しようとしてエンコーディングが合わずに下記のような文字化けを相手にしなくちゃならないなら、英語表記にしてしまおうというアプローチ。英語表示にすると、環境依存の文字化けを避けやすくなり、エラーコードベースで原因を調べやすくなります。
[FATAL: ���[�U�["postgres"�̃p�X���[�h�F�Ɏ��s���܂��� ]
解決手順
1. postgresql.conf を開く
└PostgreSQLのデータフォルダ(data)内にある postgresql.conf ファイルを開く(VScodeやテキストエディタなどで)。
2. lc_messages を書き換える
└エラーメッセージの言語を設定している箇所(lc_messages)を探す。
3. ファイルを保存(Ctrl+S)して、PostgreSQLを再起動する
└設定を反映させるために、画面下の検索バーから「サービス」を検索、開き、PostgreSQLを再起動する。
※環境によって書き方が違う場合も
OSやインストールの状態によって、元々の記述や効く設定値が異なります。いくつかのパターンを載せておくので、自分の環境に合うものを試してみてください。
パターン1(私の環境)
元々 ja_JP(あるいは ja-JP)だった部分をコメントアウト(または書き換え)して、UTF-8の英語に変更する。
Plaintext
# lc_messages = 'ja_JP' (元々の記述をコメントアウト)
lc_messages = 'en_US.UTF8'
パターン2(Windows環境などでよくある形)
環境によっては、OS依存のShift_JIS(932)系が指定されていることがある。その場合は en_US や Windows用の英語ロケールを指定する。
# lc_messages = 'Japanese_Japan.932'
lc_messages = 'en_US'
# または lc_messages = 'English_United States.1252'
要するに lc_messages を探して、日本語っぽくなっているところを英語(en_US.UTF8 や en_US)に変えればだいたい解決しそうです。
〇ついでにEclipseの文字化け対策
PostgreSQLが直っても、それを出力するEclipse側のコンソールや、プログラムのファイル自体が文字化けしていては元も子もありません。Eclipseの文字化けは、基本的に「すべてUTF-8に統一する」ことで解決します。
・ワークスペース全体のテキストエンコードを「UTF-8」にする。
①clipseのメニューから [ウィンドウ] > [設定] (Macは [Eclipse] > [環境設定])を開く。
②[一般] > [ワークスペース] を選択する。
③画面下部にある「テキスト・ファイルのエンコード」を [その他] にチェックし、UTF-8 を選択して適用していることを確認する。


