中文字符,PHP和MySQL问题

时间:2010-09-20 09:47:56

标签: php sql cjk

我有一个MySQL数据库,其中包含以下设置:
MySQL charset:UTF-8 Unicode(utf8)
MySQL连接排序规则:utf8_unicode_ci

我有一个名为“softtitle”列的表,此列以utf8_general_ci编码。此列的条目包含中文字符。如果我通过PHPMyAdmin控件窗格运行SQL,则会正确显示中文字符。但是如果我通过PHP文件运行SQL,则会错误地显示所有中文字符。这是PHP文件:

<?php
header("Content-Type: text/html; charset=utf8_general_ci"); 

mysql_connect("116.123.163.73","xxdd_f1","xxdd123"); // host, username, password
mysql_select_db("xxdd");

mysql_query("SET names 'utf8_general_ci'"); 

$q = mysql_query("SELECT  softtitle
FROM  dede_ext
LIMIT 0 , 30");

while($e = mysql_fetch_assoc($q))
        $output[] = $e;

print(json_encode($output));

mysql_close();
?>

这里有什么问题?我该怎么做才能解决这个问题?非常感谢你!

1 个答案:

答案 0 :(得分:4)

你的标题是错误的。您不应该将其设置为表/数据库的字符集。

header("Content-Type: text/html; charset=UTF-8");

同样适用于“SET NAMES”:

mysql_query("SET names 'utf8'"); 

最后,您要打印出json编码数据,Content-type不应该是text/html而是application/json