2007-02-20

PostgreSQL 編碼轉換(Convert)與應用技巧

這個功能特別適合用在對特定欄位先進行"來源字元編碼"轉換(Convert)"目的字元編碼"後, 再進行必要的資料操作事務, 例如用來做從UTF-8資料庫中抽出欄位 Convert 成 BIG-5 編碼後再進行排序.

PostgreSQL 對 "Convert" 預先定義了近 120 種供您選擇與使用(棒吧!)
詳細請查看 pg_catalog 網要模式中的 convert.

pgAdmin-III 擷圖(點圖放大)


排序可能受到的環境變數影響正確性:(請觀察您自己)
server_encoding: UTF8
client_encoding:UTF8
lc_collate:zh_TW.UTF-8

要把數據庫初始化成支持中文的 locale,比如我用 zh_TW.utf8:

initdb --locale=zh_TW.utf8 --encoding=utf8 ...

{轉述:laser}在一般用途的 postgresql 的使用時,一般會建議使用 C 做為初始化 locale,這樣PG將會使用自身內部的比較函數對各種字符(尤其是中文字符)進行排序,這麼做是合適的,因為大量OS的locale實現存在一些問 題。對於tsearch2,因為它使用的是locale來進行基礎的字串分析的工作,因此,如果錯誤使用locale,那麼很有可能得到的是空字串結果, 因為多字節的字符會被當做非法字符過濾掉。{轉述:laser}


locale 要指定為"C"

語法:
CONVERT([colname] USING [Aencodeing_to_Bencodeing])


範例:
select * from countries order by convert(state using
utf8_to_big5);

===============================================
順便提一下 I18N
Debian:
/usr/share/i18n
/usr/share/locale


請善用 Google.....

國際化(Internationalization,I18N)
程式本身所具的能力, 使其能依使用者的語言環境不同, 而適應不同的語言文字、字碼集的處理等等。國際化是指軟件能用於多國語言環境的能力。在Linux中通過locale來設置程序運行的不同語言環境,locale 由 ANSI C提供支持。locale的命名規則為<語言>_<地區>.<字符集編碼>,如zh_CN.UTF-8,zh代表中

"國際化"可能是目前我們找得到的最好解答, 國際化的英文名稱是 InternationalizatioN,這個英文單字的第一個字母 I 與最後一個字母 N 之間有 18 個字母,所以也被簡稱為 I18N。 I18N 是一種觀念跟目標,這個想法是要提供一個架構, 讓同樣的程式碼可以適用在各種語文習慣跟編碼系統上面, 程式設計人員只要利用這個架構的機制跟準則撰寫應用程式, 就可以在不需重新編譯程式的情況下,自然的支援各式各樣的語言, 不過為了要達成這樣的目標,作業系統必須提供一定程度的支援, 特別是在各種的程式庫裡面都得有支援 I18N 的 設計才可以, 這邊特別重要的就屬 C 程式庫以及 X 視窗系統的國際化設計了。

沒有留言:

網誌存檔

PostgreSQL & Google-Analytics Running...

::Planet PostgreSQL::

PostgreSQL Information Page

PostgreSQL日記(日本 石井達夫先生Blog)

PostgreSQL News

黑喵的家 - 資料庫相關

Google 網上論壇
PostgreSQL 8 DBA 專業指南中文版
書籍內容討論與更多下載區(造訪此群組)
目錄下載: PostgreSQL_8 _DBA_Index_zh_TW.pdf (更新:2007-05-18)

全球訪客分佈圖(Google)

全球訪客分佈圖(Google)