7
4

8 回答 8

20

您必须执行以下两项操作:

  1. 确保您的数据库编码和排序规则是utf8_general_ci(对于字段本身和表以及数据库)。
  2. 建立与数据库的连接后立即发送两个命令:

    mysql_query("SET NAMES utf8;");
    
    mysql_query("SET CHARACTER_SET utf8;");
    
于 2012-06-29T19:39:29.530 回答
3

您没有提及您正在使用的 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扩展。相反,应该使用MySQLiPDO_MySQL扩展。

另请参阅MySQL:选择 API指南和相关的常见问题解答以获取更多信息。

于 2012-07-01T01:42:49.147 回答
2

你应该使用这一行:

@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....
}
于 2012-06-29T14:39:29.133 回答
0

尝试这个:

@mysql_query("set global character_set_results=utf8");
于 2012-06-29T17:18:45.203 回答
0

应该utf8支持您的数据库。尝试使用utf8_general_ciutf8_unicode_ci

于 2012-06-29T14:06:06.153 回答
0

以下对我有用:

mysqli_set_charset($this->connect,'utf8'); mysqli_query($this->connect, "SET NAMES 'utf8'"); mysqli_query($this->connect, 'SET CHARACTER SET utf8');

此外,您的表必须是 (utf8_general_ci) 在结构字段中。

于 2020-05-27T02:25:08.617 回答
0

尝试更改服务器和数据库以及表排序规则

例如

ALTER DATABASE "DBNAME" CHARACTER SET utf8 COLLATE utf8_general_ci;

于 2018-07-17T20:45:26.070 回答
-1

现在 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 数据库表字段应该是 Collat​​ion=utf8_general_ci

于 2012-11-25T07:19:24.900 回答