MySQL數據庫字符集的默認配置:
在mysql的配置文件中把默認的字符集改成utf8,這樣創(chuàng )建數據庫和表的時(shí)候,默認的字符集就是utf8。
MySQL的幾個(gè)變量:
當一個(gè) PHP 程序與 MySQL 建立連接后,這個(gè)程序發(fā)送給 MySQL 的數據采用的是什么字符集?mysql如何檢測并判斷使用何種字符集?要注意以下幾個(gè)變量:
character_set_server:這是設置服務(wù)器使用的字符集
character_set_database:這是設置數據庫使用的字符集
character_set_client :這是設置客戶(hù)端發(fā)送Query串使用的字符集
character_set_connection :這是設置服務(wù)器需要將收到的查詢(xún)串轉換成的字符集
character_set_results :這是設置服務(wù)器要將結果數據轉換到的字符集,轉換后才發(fā)送給客戶(hù)端
因為配置文件設置的 default_character_set 是 utf8,數據表默認采用的就是 utf-8 建立的。這也應該是所有采用 MySQL 4.1 的主機提供商應該采用的配置。所以我們要保證的只是客戶(hù)端與 MySQL 交互之間指定編碼的正確。
這只有兩種可能,客戶(hù)端以 gb2312 格式發(fā)送數據,或者以 utf-8 格式發(fā)送數據。
如果以 gb2312 格式發(fā)送:
都是可以的,都能夠保證數據在編碼轉換中不出現丟失,也就是保證存儲入數據庫的是正確的內容。
怎么保證取出的是正確的內容呢?考慮到絕大部分客戶(hù)端 (包括 WP),發(fā)送數據的編碼也就是它所希望收到數據的編碼,所以:
可 以保證取出給瀏覽器顯示的格式就是 gb2312。不過(guò)這樣的缺點(diǎn)是不論是插入、更新、刪除還是查詢(xún)操作,只要是操縱數據庫,都要先執行SET NAMES “gb2312″,這樣才能保證插入和顯示的正確性。如果插入操作前沒(méi)有執行這條語(yǔ)句,僅在查詢(xún)時(shí)執行該語(yǔ)句,則仍然無(wú)法保證顯示的正確性。
如果是第二種情況,客戶(hù)端以 utf-8 格式發(fā)送 (WP 的默認情況),可以采用下述配置:
這個(gè)配置就等價(jià)于 SET NAMES ‘utf8′。
聯(lián)系客服