2012-08-13 62 views
5

我做了一个简单的PHP页面来获取POST数据并获取一个sql查询,然后打印结果。我正在使用mysql_fetch_array函数。mysql_fetch_array返回非Unicode文本

代码的伟大工程,但响应是一个非Unicode文本,并将其返回是这样的:

?????ABC????? 

注意数据库整理是UTF8和存储的数据都在phpMyAdmin正确显示。我甚至使用这个META标签在PHP页面,但它的结果相同:

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

任何想法?

+1

尝试设置字符enconding进行连接。根据PHP“ – 2012-08-13 17:36:16

回答

12

创建的连接第一查询之前添加几行代码:

mysql_query("SET NAMES 'utf8'"); 
mysql_query("SET CHARACTER SET utf8"); 
mysql_query("SET SESSION collation_connection = 'utf8_unicode_ci'"); 

,也可以编辑你的MySQL配置中使用utf8默认。在这里检查你需要做什么。

Change MySQL default character set to UTF-8 in my.cnf?

UPDATE

功能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'"); 
+0

thnx老兄!真棒! – 2012-08-13 18:09:50

+0

不客气:) – Farahmand 2012-08-13 18:13:14

+1

注意:函数'mysql_query'已弃用。 – ganji 2016-01-20 14:36:34

2
mysql_set_charset('utf8', $link); 

其中$链接是的mysql_connect

+0

”此扩展在PHP 5.5.0以前不推荐使用,并且将在未来删除...此功能的替代方法包括: mysqli_set_charset()“。 http://php.net/manual/en/function.mysql-set-charset.php – 2014-12-05 12:38:20