那麼set names是什麼呢? set names實際上就是同時設置了character_set_client
例如set names
set @@character_set_client =
gbk
set @@character_set_connection =gbk
set @@character_set_results =gbk
很多情況下
因為character_set_client
例如
下面我給出一段用於設置字符集的代碼(其中用到了一個我自己寫的db庫
<?
//假設我們的程序采用的是utf的字符集
$program_char =utf ;
//先檢查mysql的版本號如果版本號大於 我們才可以設置這些系統變量(mysql 還沒有這些系統變量)
$version = current($db>fetch_one( SELECT VERSION() ));
if (substr($version) > )
{
//取出當前數據庫的字符集
$sql =SELECT @@character_set_database ;
$char = current($db>fetch_one($sql));
//將客戶端字符集(character_set_client)和連接字符集(character_set_connection)設置為與數據庫字符集(character_set_database)一致
$db>query( SET @@character_set_client = $char );
$db>query( SET @@character_set_connection = $char );
//將SELECT查詢返回數據的字符集設置為與當前程序的字符集一致
$db>query( SET @@character_set_results = $program_char );
}
?>
到此應該就可以解決絕大多數我們遇到的亂碼問題了
對於這樣的問題處理起來就比較的麻煩
我們如果能確保其他環節的設置都是正確的
總而言之
說了一大堆可能把你給弄迷糊了
[
From:http://tw.wingwit.com/Article/program/SQL/201311/16315.html