8 回答
您必须执行以下两项操作:
- 确保您的数据库编码和排序规则是
utf8_general_ci
(对于字段本身和表以及数据库)。 建立与数据库的连接后立即发送两个命令:
mysql_query("SET NAMES utf8;"); mysql_query("SET CHARACTER_SET utf8;");
您没有提及您正在使用的 MySQL 版本,但如果使用 5.0.7 或更高版本,请按照官方 PHP 文档:
这是更改字符集的首选方法。不推荐使用 mysql_query() 来设置(如 SET NAMES utf8)。有关更多信息,请参阅 MySQL 字符集概念部分。
例如, 假设您使用的是 mysql_query 扩展。
<?php
$link = mysql_connect('localhost','user1','pass1',TRUE);
mysql_selectdb('db1', $link);
mysql_set_charset('utf8',$link);
?>
其他注意事项:
- 正在使用的文件应使用 UTF-8 编码
- 数据库、表和字段都应编码并使用排序规则
utf8_general_ci
- PHP 标头和 HTML 标头也应设置为 UTF-8
作为旁注,不鼓励使用mysql_query扩展。相反,应该使用MySQLi或PDO_MySQL扩展。
另请参阅MySQL:选择 API指南和相关的常见问题解答以获取更多信息。
你应该使用这一行:
@mysql_query("SET NAMES 'utf8' ");
看这个功能:
function _connect($user, $pass, $host)
{
$conn = mysql_connect($host, $user, $pass);
if (!$conn)
return false;
@mysql_query("SET NAMES 'utf8' ");
//more....
}
尝试这个:
@mysql_query("set global character_set_results=utf8");
应该utf8
支持您的数据库。尝试使用utf8_general_ci
或utf8_unicode_ci
以下对我有用:
mysqli_set_charset($this->connect,'utf8');
mysqli_query($this->connect, "SET NAMES 'utf8'");
mysqli_query($this->connect, 'SET CHARACTER SET utf8');
此外,您的表必须是 (utf8_general_ci) 在结构字段中。
尝试更改服务器和数据库以及表排序规则
例如
ALTER DATABASE "DBNAME" CHARACTER SET utf8 COLLATE utf8_general_ci;
现在 PHP 和 MYSQL 支持任何语言。在数据库连接中使用此功能。
$this->links = mysql_connect(DB_SERVER,DB_SERVER_USERNAME,DB_SERVER_PASSWORD);
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8',
character_set_connection = 'utf8', character_set_database = 'utf8',
character_set_server = 'utf8'", $this->links);
MYSQL 数据库表字段应该是 Collation=utf8_general_ci