編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

ロケール・日本語設定

各種ロケールの確認

psql> SHOW lc_collate;
psql> SELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%';
    name     | setting |  context
-------------+---------+-----------
 lc_collate  | C       | internal
 lc_ctype    | C       | internal
 lc_messages | C       | superuser
 lc_monetary | C       | user
 lc_numeric  | C       | user
 lc_time     | C       | user

クライアント側のエンコーディングの確認

psql> \encoding
UTF8

全データベースのロケール・エンコーディングの確認

$ psql -l

または

psql> \l
                             List of databases
   Name    |  Owner   | Encoding | Collation | Ctype |   Access privileges
-----------+----------+----------+-----------+-------+-----------------------
 mydb01    | taro     | EUC_JP   | C         | C     |
 mydb02    | taro     | UTF8     | C         | C     |

ロケールに関する決まり事

ロケール無し=ロケールC

「initdb locale=C」と「initdb --no-locale」は同じ意味。

ロケールをC以外にするなら、必ずエンコーディングも同じにする

例えば、ロケールをEUC_JPにするなら、一緒にエンコーディングもEUC_JPに設定して、createdbしないといけない。

$ createdb --encoding=EUC_JP --locale=ja_JP.EUC_JP --template=template0 mydb01

ロケールを設定するタイミング

initdbもしくはcreatedbする時。createdbで指定できるのはPostgreSQL8.4以降。

UTF8でinitdbして、EUCJPでcreatedbする

initdbする

$ initdb --locale=C --encoding=UTF8

createdbする

$ createdb --encoding=EUC_JP --locale=ja_JP.EUC_JP --template=template0 mydb01

localeとencodingのエンコーディングは揃える。

psqlで接続

$ LC_ALL=ja_JP.eucjp psql mydb01

ターミナルのエンコーディングはEUCにしておく。

日本語が正しく扱えるか確認する

CREATE TABLE t1 ( str text );
INSERT INTO t1 VALUES ( 'ううう' );
INSERT INTO t1 VALUES ( 'ええ' );
INSERT INTO t1 VALUES ( 'お' );
INSERT INTO t1 VALUES ( 'いいいい' );
INSERT INTO t1 VALUES ( 'あああああ' );
SELECT * FROM t1 WHERE str LIKE '%あ%';
SELECT length(str), str FROM t1 ORDER BY str;

psqlで日本語入力が利かない(エコーバックされない)

readlineを切ってみる。

$ psql -n mydb01

参考

ロケール(国際化と地域化)
http://lets.postgresql.jp/documents/technical/text-processing/2
psql
http://www.postgresql.jp/document/9.2/html/app-psql.html

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2014-04-14 (月) 18:39:32 (1221d)