要想打開自動字元集轉換功能,你必須告訴 PostgreSQL 你想在客戶端使用的字元集(編碼)。你可以用好幾種方法實現這個目的。
用 psql 里的 /encoding 命令。 /encoding 允許你動態修改客戶端編碼。 比如,把編碼改變為 SJIS,鍵入:
/encoding SJIS
使用 libpq 函數。 /encoding 在做此用途的時候實際上是調用 PQsetClientEncoding()。
int PQsetClientEncoding(PGconn *conn, const char *encoding);
這里 conn 與後端的聯接,而 encoding 是你想用的編碼。如果編碼設置成功它返回 0,否則返回 -1。本次聯接的當前編碼可以用下面函數顯示:
int PQclientEncoding(const PGconn *conn);
請注意它只返回編碼 ID,而不是象 EUC_JP 這樣的編碼符號字串。 要把編碼 ID 轉換為編碼符號,你可以用:
char *pg_encoding_to_char(int encoding_id);
使用 SET client_encoding TO。 可以用 SQL 命令設置客戶端編碼:
SET CLIENT_ENCODING TO 'value';
你還可以把 SQL 語法里的 SET NAMES用於這個目的:
SET NAMES 'value';
查詢當前客戶端編碼:
SHOW client_encoding;
返回預設編碼:
RESET client_encoding;
使用 PGCLIENTENCODING。 如果在客戶端的環境里定義了 PGCLIENTENCODING 環境變數, 那麼在與伺服器進行聯接時將自動選擇客戶端編碼。 (這個編碼隨後可以用上面談到的任何其它方法覆蓋。)
使用client_encoding配置變數。 如果在 postgresql.conf 里設置了 client_encoding 變數, 那麼在與伺服器建立了聯接之後,這個客戶端編碼將自動選定。(這個設置隨後可以被上面提到 的其他方法覆蓋。)
假如無法進行特定的字元轉換 — 比如, 你選的伺服器編碼是EUC_JP, 客戶端是LATIN1,那麼有些日文字元不能轉換成LATIN1。這時, 不能用LATIN1字元集表示的字母將被轉換成圓括弧包圍的十六進制,像,(826C) 這樣。
如果客戶端字元集定義成了 SQL_ASCII,那麼編碼轉換會被關閉, 不管伺服器的字元集是什麼都一樣。和伺服器一樣,除非你的工作環境全部是 ASCII 數據, 否則使用 SQL_ASCII 是不明智的。
② 怎樣查看修改sqlserver資料庫的編碼格式
SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')
下面是查詢結果:
936 簡體中文GBK
950 繁體中文BIG5
437 美國/加拿大英語
932 日文
949 韓文
866 俄文
65001 unicode UFT-8