mysql_fetch_array返回非Unicode文本

6
我已经编写了一个简单的PHP页面,用于获取POST数据并获取SQL查询,然后打印结果。我正在使用mysql_fetch_array函数。
代码运行得很好,但响应是非Unicode文本,并返回类似于以下内容的结果:
?????ABC?????

请注意,数据库的字符集为UTF8,并且在phpMyAdmin中显示的存储数据是正确的。我甚至在php页面中使用了这个META标签,但结果仍然相同。
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">

任何想法?!

1
尝试为连接设置字符编码。 - Umair Khan
3个回答

17
在第一个查询之前添加以下代码行:
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET SESSION collation_connection = 'utf8_unicode_ci'");

或者您可以编辑MySQL配置文件,使其默认使用utf8编码。了解所需操作步骤,请查看此处。

如何在my.cnf文件中将MySQL默认字符集更改为UTF-8?

更新

函数mysql_query已被弃用,因此可以使用mysqli对象进行操作,如下所示:

$mysqli = new mysqli("localhost", "MYSQL_USER", "MYSQL_PASS", "MYSQL_DB");

$mysqli->query("SET NAMES 'utf8'"); 
$mysqli->query("SET CHARACTER SET utf8");  
$mysqli->query("SET SESSION collation_connection = 'utf8_unicode_ci'"); 

5
mysql_set_charset('utf8', $link);

其中$link是使用mysql_connect创建的连接


1
根据PHP的说法,“此扩展自PHP 5.5.0起已被弃用,并将在未来被移除...此函数的替代方法包括:mysqli_set_charset()”。请参考http://php.net/manual/en/function.mysql-set-charset.php。 - tony gil

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接