我只想提供一些关于
vartec提出的解决方案的更多细节(这取决于你的MySQL安装)是你问题的最正确的解决方案。
首先,MySQL中的字符集/编码问题是一个有点复杂的主题,这在MySQL手册
Chapter 9.1 “Character Set Support”中有广泛的涵盖。在你的情况下,特别是
9.1.4. “Connection Character Sets and Collations”将是最相关的。
简要说明:MySQL必须知道您的客户端应用程序的哪个字符集/编码(从您的PHP脚本的数据库persoective来讲)期望,因为它会从服务器上定义的内部字符集/编码转码所有字符串数据,数据库,表或列级连接到连接字符集/编码。您在客户端使用UTF-8,所以必须告诉MySQL您使用的是UTF-8。这是通过MySQL命令SET NAMES’utf8’完成的,它必须作为打开连接的第一个查询发送。根据您的安装以及您在PHP脚本中使用的MySQL客户端库,可以在每个连接上自动完成。
如果您使用PDO,则只需要设置一个配置参数
$db = new PDO($dsn, $user, $password);
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
使用mysqli更改客户端字符集/编码更加简单:
$mysqli = new mysqli("localhost", "user", "password", "db");
$mysqli->set_charset("utf8");
我希望这将有助于使整个事情更容易理解。