我有一个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();
?>
这里有什么问题?我该怎么做才能解决这个问题?非常感谢你!
答案 0 :(得分:4)
你的标题是错误的。您不应该将其设置为表/数据库的字符集。
header("Content-Type: text/html; charset=UTF-8");
同样适用于“SET NAMES”:
mysql_query("SET names 'utf8'");
最后,您要打印出json编码数据,Content-type
不应该是text/html
而是application/json
。