19.12. PostgreSQL 不能處理中文?

PostgreSQL 中使用中文一向有小問題, 如 '許'、'社' 等等後面是 \ 的中文字都會出搥,直到 6.5 版以後,才加入了 multibyte 的支援。

PostgreSQL 的語言支援分 前/後端(frontend/backend),無論前端使用何種語言, 後端都會使用設定好的語言存入資料庫中。

這有什麼好處?例如:後端設定成繁體中文,前端設定成簡體中文, 然後,存入的繁體中文,顯示的是簡體中文,當然, 它不會做中、英翻譯。

要正確使用中文,比較保險的作法是後端使用 euc_tw 編碼,前端使用 big5 編碼,例如:

    % createdb --encoding euc_tw test  ' 建立後端為 euc_tw 編碼的 db
    % psql test  ' 使用 psql 管理工具,就像 mysql 般。
    test=#  ' 已經進入 psql
    test=# \encoding big5  ' 設定前端為 big5 編碼
    test=# create table test (
    test=# usrname char(20));  ' 建立 table
    test=# insert into test values('許國榮');  ' 測試
    test=# select * from test;  '您會看到正確的答案
    test=# \q
         

也可以在 PostgreSQL 中下 PGCLIENTENCODING=BIG5 的指令,如果是使用 PHP + PostgreSQL 則使用以下方式

     $conn = pg_connect("user=postgres dbname=stip");
     pg_exec($conn, "set client_encoding to 'BIG5'");
         

WWW: http://www.postgresql.org/