麻烦与在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