麻烦与在MySQL

问题描述:

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)

问题是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 

运行mysql_set_charset(),然后在打开的连接上执行查询。

mysql_set_charset("UTF-8");