Php Mysql中Encoding的问题

Php Mysql中Encoding的问题,php,mysql,utf-8,character-encoding,Php,Mysql,Utf 8,Character Encoding,我有下一张桌子: 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; 我想在“名称”字段中存

我有下一张桌子:

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;
我想在“名称”字段中存储值“España”

我有一个PHP文件(用UTF8编码)和一个表单来保存它。当我使用php文件保存“España”并使用php从mysql中读取数据时,我看到数据正常

但如果使用PMAOMySQL查询浏览器,我会看到:“España”

如果我从PMA(编码设置为UTF-8)或mysql查询浏览器保存它,我会在这两个工具上看到ok,但我会看到“Espa”�来自PHP的“a”

我不明白为什么

以字节为单位:

如果是从PHP保存的,我看到:C3 83 C2 B1(对于ñ)

如果是从MQB或PMA保存的,我看到:C3 B1(表示ñ)

在打开的连接上执行查询之前运行

mysql_set_charset("UTF-8");

问题是php mysql客户端。它使用拉丁语1作为连接编码,您可以通过以下方式看到:

echo mysql_client_encoding($con);

有两种方法可以解决此问题:

mysql_set_charset("utf8");

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