MySQL數(shù)據(jù)庫 字符編碼問題解決MySQL數(shù)據(jù)庫字符集的默認(rèn)配置: 在mysql的配置文件中把默認(rèn)的字符集改成utf8,這樣創(chuàng)建數(shù)據(jù)庫和表的時(shí)候,默認(rèn)的字符集就是utf8。 當(dāng)一個(gè) PHP 程序與 MySQL 建立連接后,這個(gè)程序發(fā)送給 MySQL 的數(shù)據(jù)采用的是什么字符集?mysql如何檢測(cè)并判斷使用何種字符集?要注意以下幾個(gè)變量: character_set_server:這是設(shè)置服務(wù)器使用的字符集 這只有兩種可能,客戶端以 gb2312 格式發(fā)送數(shù)據(jù),或者以 utf-8 格式發(fā)送數(shù)據(jù)。 如果以 gb2312 格式發(fā)送: SET character_set_client=’gb2312′
都是可以的,都能夠保證數(shù)據(jù)在編碼轉(zhuǎn)換中不出現(xiàn)丟失,也就是保證存儲(chǔ)入數(shù)據(jù)庫的是正確的內(nèi)容。 怎么保證取出的是正確的內(nèi)容呢?考慮到絕大部分客戶端 (包括 WP),發(fā)送數(shù)據(jù)的編碼也就是它所希望收到數(shù)據(jù)的編碼,所以: 可 以保證取出給瀏覽器顯示的格式就是 gb2312。不過這樣的缺點(diǎn)是不論是插入、更新、刪除還是查詢操作,只要是操縱數(shù)據(jù)庫,都要先執(zhí)行SET NAMES “gb2312″,這樣才能保證插入和顯示的正確性。如果插入操作前沒有執(zhí)行這條語句,僅在查詢時(shí)執(zhí)行該語句,則仍然無法保證顯示的正確性。 如果是第二種情況,客戶端以 utf-8 格式發(fā)送 (WP 的默認(rèn)情況),可以采用下述配置: 這個(gè)配置就等價(jià)于 SET NAMES ‘utf8′。 |
|