Home  >  Article  >  Backend Development  >  web前端开发 - PHP输出json到web无法正常显示中文

web前端开发 - PHP输出json到web无法正常显示中文

WBOY
WBOYOriginal
2016-06-06 20:27:491307browse

PHP从mysql获取数据后,录入数组并转为json。
最后输出的时候,中文显示为"?"。
这个问题是出在服务器还是php?
在数据库里看,中文是能正常显示的。
PHP代码:

<code>    $result = mysql_query("select * from hpsubject");
    while ($row = mysql_fetch_array($result)) {
        $arr = json_encode(array('hps_userid'=>$row['hps_userid'],
                            $row['hps_userid2'], $row['hps_subid'], $row['hps_type'],
            $row['hps_addr'], $row['hps_distance'], $row['hps_title'], $row['hps_feel'], $row['hps_dowhat'],
            $row['hps_text'], $row['hps_img'], $row['hps_like'], $row['hps_repost'], $row['hps_comment'],
            $row['hps_date'], $row['hps_time'], $row['hps_liveline'], $row['hps_deadline']));
    echo $arr;
    }</code>

输出结果:
{"hps_userid":"1","0":"1","1":"1","2":"????","3":"??","4":"50","5":"??","6":"??","7":"????","8":"??","9":"??","10":"100","11":"100","12":"100","13":"2015-09-21","14":"154436","15":"2015-09-21 15:44:36","16":"2015-09-21 15:44:36"}

回复内容:

PHP从mysql获取数据后,录入数组并转为json。
最后输出的时候,中文显示为"?"。
这个问题是出在服务器还是php?
在数据库里看,中文是能正常显示的。
PHP代码:

<code>    $result = mysql_query("select * from hpsubject");
    while ($row = mysql_fetch_array($result)) {
        $arr = json_encode(array('hps_userid'=>$row['hps_userid'],
                            $row['hps_userid2'], $row['hps_subid'], $row['hps_type'],
            $row['hps_addr'], $row['hps_distance'], $row['hps_title'], $row['hps_feel'], $row['hps_dowhat'],
            $row['hps_text'], $row['hps_img'], $row['hps_like'], $row['hps_repost'], $row['hps_comment'],
            $row['hps_date'], $row['hps_time'], $row['hps_liveline'], $row['hps_deadline']));
    echo $arr;
    }</code>

输出结果:
{"hps_userid":"1","0":"1","1":"1","2":"????","3":"??","4":"50","5":"??","6":"??","7":"????","8":"??","9":"??","10":"100","11":"100","12":"100","13":"2015-09-21","14":"154436","15":"2015-09-21 15:44:36","16":"2015-09-21 15:44:36"}

<code class="php">if (function_exists('mysql_set_charset') === false) {
   mysql_query("SET NAMES 'utf8'", $con);
}else{
   mysql_set_charset('utf8', $con);
}</code>

$con 对应 mysql_connect 函数的返回值, 上面的 utf8 改为你数据库的编码(上面的代码放在你执行mysql_query("select * from hpsubject")之前.

然后在你的php文件头部增加一行header('Content-Type: application/json; charset=utf-8'); 其中这里的 utf-8 也改为你数据库中所使用的编码.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn