2011-05-07 91 views
1

encondig我有下表:麻煩與在MySQL

CREATE TABLE IF NOT EXISTS `applications` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

我希望值「西班牙」保存在「名稱」字段。

我有一個PHP文件(用UTF8編碼)與一個窗體來保存。當我使用php文件保存「España」,並使用php從mysql讀取數據時,我看到數據正常。

但如果到PMA一展身手ØMySQL查詢瀏覽器,我看到這樣的:「Españ一個」

如果我保存它從PMA(有編碼設置爲UTF-8)或MySQL查詢瀏覽器,我看到的OK這兩個工具,但我看到來自PHP的「Espa a」。

我不明白爲什麼。

在字節:

如果從PHP保存我看到:C3 83 C2 B1(對於n)

如果從MQB或PMA保存我看到:C3 B1(對於n)

回答

0

問題是php mysql客戶端。它使用的latin1作爲編碼的連接,你可以看到這一點:

echo mysql_client_encoding($con); 

print_r(mysql_fetch_assoc(mysql_query("show variables like 'char%';"))); 

有兩種方法來解決這個問題:

mysql_set_charset("utf8"); 

mysql_query("SET CHARACTER SET 'UTF8'", $con); // data send by the server 
mysql_query("SET NAMES 'UTF8'", $con); // data send by the client