* ロケール・日本語設定 [#ydd85f54]

** 各種ロケールの確認 [#h5c7ea34]
 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

** クライアント側のエンコーディングの確認 [#k4a56db6]
 psql> \encoding

 UTF8

** 全データベースのロケール・エンコーディングの確認 [#b46e1b03]
 $ 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 [#p21b9ec4]
** ロケールに関する決まり事 [#nf061822]

*** ロケール無し=ロケールC [#z2dce4c0]
「initdb locale=C」と「initdb --no-locale」は同じ意味。

** ロケールを設定するタイミング [#gcf5c222]
*** ロケールをC以外にするなら、必ずエンコーディングも同じにする [#j2fc1a95]
例えば、ロケールをEUC_JPにするなら、一緒にエンコーディングもEUC_JPに設定して、createdbしないといけない。
 $ createdb --encoding=EUC_JP --locale=ja_JP.EUC_JP --template=template0 mydb01

*** ロケールを設定するタイミング [#h13b6379]
initdbもしくはcreatedbする時。createdbで指定できるのはPostgreSQL8.4以降。

** UTF8でinitdbして、EUCJPでcreatedbする [#tefb644d]

*** initdbする [#xf952dbb]
 $ initdb --locale=C --encoding=UTF8

*** createdbする [#z09dcae2]
 $ createdb --encoding=EUC_JP --locale=ja_JP.EUC_JP --template=template0 mydb01
localeとencodingのエンコーディングは揃える。

*** psqlで接続 [#kf2712c3]
 $ LC_ALL=ja_JP.eucjp psql mydb01
ターミナルのエンコーディングはEUCにしておく。

** 日本語が正しく扱えるか確認する [#d6d281ec]
 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で日本語入力が利かない(エコーバックされない) [#v9632fe2]
readlineを切ってみる。
 $ psql -n mydb01

** 参考 [#tf9ecd4f]
:ロケール(国際化と地域化)|http://lets.postgresql.jp/documents/technical/text-processing/2
:psql | http://www.postgresql.jp/document/9.2/html/app-psql.html

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