2009年2月6日金曜日

Ubuntuでロケール(ja_JP.eucjp)追加

以下を参考にPostgreSQLのロケールをUTF-8からロケールなしに変更。
UbuntuはベースがUTF-8なので、EUC-JPのデータベースでソートがおかしくなったりする問題が出てくる模様。

(参考URL)
http://d.hatena.ne.jp/pasela/20080909/postgres

コンソールからロケールja_JP.eucJPに変更して日本語のデータを入れようとした文字が入らない。コンソール上では日本語部分が文字化けになっている。

pg_controlldataコマンドで見るとロケールはCになっているのになぜ?

ちなみにUbuntu8.10でPostgreSQLのコマンド類は以下のディレクトリにあった。
/usr/lib/postgresql/8.3/bin

psql実行時に良く見ると

—–ワーニング—–
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = “ja_JP:ja:en_GB:en”,
LC_ALL = (unset),
LANG = “ja_JP.eucJP”
are supported and installed on your system.
perl: warning: Falling back to the standard locale (”C”).
Welcome to psql 8.3.5, the PostgreSQL interactive terminal.
—-ここまで—–

どうもロケールの設定が良くないようでlocale -aで見ると確かにロケールにja_JP.eucjpがなかった。

ここを参考にロケールを追加
(参考)
http://d.hatena.ne.jp/Bayside/20080207/p1

/var/lib/locales/supported.d/localeに「ja_JP.EUC-JP EUC-JP」を追記して、locale-genを実行するとja_JP.eucjpが追加される。

たしかにlocale -aで見るとja_JP.eucjpが追加されていた。

euc-jpにコンソールのロケールを変更して、試してみるときちんと表示も入力もできるようになった。
$export LANG=ja_JP.eucjp

0 件のコメント: