PHP输出JSON Web Service charset UTF-8错误

我正在通过 PHP托管JSON输出的Web服务.

我在DB中有希伯来语数据集,我将此作为输出发布到Web服务.

当我最初发布数据时,它输出结果如下:

JSON:

{
    "tasklist": [
        {
            "customerID": "9936","name": "טר ×רמה ×™×–×•× ×•×‘×™× ×•×™ בע"מ","cargo":"×ברר","destination":"מכר","quantity":"1.000000","startdate":"03/01/201300: 00: 00" 
        }
               ]
}

但是这个“×הרר“可以被Android / Iphone解析器读取并将其转换为原始的希伯来语.但我在“名字”中遇到错误:“×〜ר××¨×ž×”×™× – ו×וגי×ויגע“מ”,其中“位于字符串之间,因此JSON无效并显示错误

为了解决这个问题我使用UTF-8将“×גרר”转换为希伯来语“נברר”.但在这种情况下,问题仍然存在:

PHP

header(‘Content-type: text/html; charset=UTF-8’);

JSON:

{
    "tasklist": [
        {
            "customerID": "9936","name": "טר ארמה יזום ובינוי בע"מ","cargo":"נברר","destination":"מכר","startdate":"03/01/201300: 00: 00"
        }
                ]
}

但问题仍然存在:

在某些情况下,由于使用UTF-8,我得到了这个

"name":"מחצבות כפר גלעדי-חומרי מ�"

>我如何克服这个问题?
>我需要使用其他特定编码吗?

注意:数据不能在数据库中更改解决方案应该在输出到JSON时.

DB中存储的数据如何显示如下:

name

מחצבות כפר גלעדי-חומרי מ×

我的PHP脚本输出JSON:

<?PHP

//My DB connection and Query comes here

$jsontext = '{"tasklist":[';
while($row = MysqL_fetch_array($queryExe)){
$jsontext .= '{"customerID":"'.$row['AUTO_ID'].'",';
$jsontext .='"name":"'.$row['Customer_Name'].'",';
$jsontext .='"cargo":"'.$row['Type_of_Cargo'].'",';
$jsontext .='"destination":"'.$row['Destination'].'",';
$jsontext .='"quantity":"'.$row['Quantity'].'",';
$jsontext .='"startdate":"'.$row['startdate'].'"},';
}
$jsontext = substr_replace($jsontext,'',-1); // to get rid of extra comma
$jsontext .= "]}";

header('Content-type: text/html; charset=UTF-8');

//Output the final JSON
echo $jsontext;

?>

提前谢谢你的帮助!

问题清楚了吗?了解我的问题.

如果你的db-field是utf8,你应该坚持:
MysqL_query("SET NAMES 'utf8'");

在插入数据之前,您应该始终执行’SET NAMES …’.
确保你真的存储了utf8编码的字符串!

那么你的查询

MysqL_query($your_query);

$array = array("tasklist"=>array());    

while($row = MysqL_fetch_array($queryExe)){
        $a = array();
        $a["customerID"] = $row['AUTO_ID'];
        $a["name"] = $row['Customer_Name'];
        $a["cargo"] = $row['Type_of_Cargo'];
        $a["destination"] = $row['Destination'];
        $a["quantity"] = $row['Quantity'];
        $a["startdate"] = $row['startdate'];
        $array["tasklist"][] = $a;
}

header("Content-type: application/json; charset=utf-8");

echo json_encode($array);
exit();

当服务器默认字符集例如是iso时,我已经获得了这些还不够的经验.在这种情况下,我需要在我的.htaccess中执行以下操作:

AddDefaultCharset utf-8

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...