php响应中的文本编码

时间:2013-10-01 23:45:15

标签: php json encoding utf-8

我正在尝试用希伯来语打印JSON并且只获得utf-8编码的字符串。如何确保客户端的浏览器以希伯来语显示字符串?

代码是:

<html>
 <head>
  <meta charset=utf-8" />
 </head>
<body>
<?php 
     header('Content-Type: text/html; charset=utf-8');
    $response = array();
    require_once __DIR__.'/db_connect.php';
    $db = new DB_CONNECT();

    $result = mysql_query(" SELECT * FROM stores") or die(mysql_error());

    if (mysql_num_rows($result)>0){
        $response["stores"]=array();

        while($row = mysql_fetch_array($result)){
            $store = array();
            $store["_id"]=$row["_id"];
            $store["name"]=$row["name"];
            $store["store_type"]=$row["store_type"];

            array_push($response["stores"],$store);

        }
        $response["success"] = 1;
        $string =  utf8_encode(json_encode($response));
        echo hebrevc($string);    
    }else{
        $response["success"]=0;
        $response["message"]="No stores found";
        echo utf8_encode(json_encode($response));
    }
    ?>


 </body>
</html>

,回复是:

{{ “存储”:[{ “_ ID”: “1”, “名称”: “\ u05d7 \ u05ea \ u05d5 \ u05dc \ u05d9”, “store_type”:“\ u05de \ u05e1 \ u05e2 \ u05d3 \ u05ea \ u05d1 \ u05e9 \ u05e8 \ u05d9 \ u05dd“},{”_ id“:”2“,”name“:”\ u05de \ u05e2 \ u05d3 \ u05e0 \ u05d9 \ u05de \ u05d0 \ u05de \ u05d9“,”store_type “:”\ u05de \ u05e1 \ u05e2 \ u05d3 \ u05d4 \ u05dc \ u05e8 \ u05d5 \ u05e1 \ u05d9 \ u05dd“}],”成功“:1

2 个答案:

答案 0 :(得分:2)

PHP 5.4中添加了一个很好的常量: JSON_UNESCAPED_UNICODE

使用它不会逃避您的希伯来字符。

echo json_encode($response, JSON_UNESCAPED_UNICODE);

查看json_encode reference

答案 1 :(得分:0)

结果看起来像UCS-2字符串。尝试设置Mysql连接的字符集:

mysql_set_charset('utf8', $conn)

然后删除utf8_encode语句