6

我制作了一个简单的 PHP 页面来获取 POST 数据并获取 sql 查询然后打印结果。我正在使用 mysql_fetch_array 函数。

该代码运行良好,但响应是非 Unicode 文本,它返回如下内容:

?????ABC?????

请注意,数据库排序规则是 UTF8 并且存储的数据在 phpMyAdmin 中正确显示。我什至在 php 页面中使用了这个 META 标记,但结果相同:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">

任何的想法?!

4

3 回答 3

16

在第一个查询之前添加这些代码行:

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'"); 
于 2012-08-13T18:02:01.657 回答
5
mysql_set_charset('utf8', $link);

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

于 2012-08-13T17:45:13.123 回答
-1

尝试使用mb_internal_encoding("UTF-8"); 详情http://php.net/manual/en/function.mb-internal-encoding.php

于 2012-08-13T17:27:06.003 回答