我需要从一个特定的网络托管服务中访问数据库。页面以 UTF-8 编码,并且表单接收到的数据应插入数据库而不更改编码。数据库也使用 UTF-8。
此处 SET character set 'utf8' 或 SET names 'utf8' 均无法正常工作,因此此解决方法确保所有变量都设置为 utf-8。
<?php
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);
$re = mysql_query('SHOW VARIABLES LIKE "%character_set%";')or die(mysql_error());
while ($r = mysql_fetch_assoc($re)) {var_dump ($r); echo "<br />";} exit;
?>
现在所有重要的变量都是 utf-8,我们可以安全地使用 INSERT 或 SELECT 与 mysql_escape_string($var) 而无需任何编码函数。