先日騒いでいたJDBCドライバを読み込んでくれなかった事件
単にデータベース名を間違っていただけでした。
解決解決。
さて、作業を続行しようと思ったのですが、開発に使う試験用のDBを
作っていなかったことに気づき、DB作りから始めることに。
PostgreSQLのpgAdminで鼻歌混じりにさらりとテーブルを作り、できたことを
psqlで確認しました。
select * from (データベース名);
そして出てきたレコードにびっくり。
日本語のレコードが意味のわからない漢字に変換されていました。
文字化け。
ええ~~~!?なんで!?
8.3のときはそんなことなかったのに。
インストールしたとき、「ロケールとやらを指定してね☆」
という項目があったので、Japanとかにしておいたのがまずかったのか
と思いました。
8.3インストールのメモを見たとき、Cを指定する!と残っていたので。
仕方なく、アンインストールして再インストール。ロケールはしっかりCにしてっと…
またちまちま適当なDBを作り、psqlで確認。
また文字化け。
アレ、ロケール関係ないのかよ。
じゃあなんだ!?ネットで情報を探すも、まだ8.3の情報ばかり。
困った…
聞けば同僚のPostgreSQLは文字化けなどしていないという。
理不尽すぎる・・・
「エンコーディング間違ってるんじゃないの?私S_JISでやってる。」
という同僚のアドバイスの元、DBの設定で見てみたら私のはUTF-8。
これが原因か?
で、設定しなおそうとするも、エンコーディングのところだけなぜか
変更できないようになっている。
どうせえちゅうねん。
半ばやけくそでpsqlでhelpコマンドを呼び出しました。
その中に思わぬヒントが。
\encodingで文字コードの表示とセットができるよ☆
このhelpに従って問題が解決したことがない私でしたが、試しに
やってみました。
確かに\encodingと打って実行すると、今のエンコードが出る。
UTF-8。じゃあ、空白入れて変えたい文字列入れたら変更
できたりして(笑)。
\encoding S_JIS
やってみたら、なんとできた。
もう一度selectを実行すると、文字化けもなくなっていました。
万歳!
PostgreSQLが文字化けしてしょうがない、という方の参考になればと。
