处理 PHP 和 MySQL 时使用 UTF-8。这是我的连接方式:
$DB_USERNAME = '';
$DB_PASSWORD = '';
$DB_HOST = '';
$DB_NAME = '';
$pdo_attributes = array();
$pdo_attributes[PDO::ATTR_EMULATE_PREPARES] = FALSE;
$dsn = sprintf('mysql:dbname=%s;host=%s;charset=utf8', $DB_NAME, $DB_HOST);
$pdo = new PDO($dsn, $DB_USERNAME, $DB_PASSWORD, $pdo_attributes);
此外,在 PHP < 5.3.6 中设置此附加属性:
$pdo_attributes[1002] = 'SET NAMES utf8';
整数1002
代表 PDO::MYSQL_ATTR_INIT_COMMAND,但是该命令在 PHP < 5.3.1 中被破坏。
在此答案的原始内容下方查找,该内容现已过时。这是使用不再推荐的旧mysql_*
功能的连接方式,以及当时需要的其他一些防止乱码的技巧:
mysql_connect ("localhost", "DB_USER", "DB_PASSWORD") or die (mysql_error());
mysql_select_db ("DATABASE_NAME") or die (mysql_error());
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
mysql_query("SET character_set_database=utf8");
mysql_query("SET character_set_results=utf8");
mysql_query("SET character_set_server=utf8");
mysql_query("SET NAMES 'utf8'");