Rumah >pembangunan bahagian belakang >tutorial php >web前端开发 - PHP输出json到web无法正常显示中文

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

WBOY
WBOYasal
2016-06-06 20:27:491322semak imbas

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 也改为你数据库中所使用的编码.

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn