Php 将utf8\u general\u ci转换为JSON时出现问题

Php 将utf8\u general\u ci转换为JSON时出现问题,php,json,string,utf-8,hebrew,Php,Json,String,Utf 8,Hebrew,我用utf8\u general\u ci将希伯来文存储在MYSQL中,它的存储方式类似于××יב טי××ת××× 但是当我检索它并进行json编码时,它会转换×יב טי××ת××希伯来文文本 { "taskdetails": { "customerID": "37031", "name": "החברה הכלכלית", "destination": null, "quantity": "0.00

我用utf8\u general\u ci将希伯来文存储在MYSQL中,它的存储方式类似于××יב טי××ת×××

但是当我检索它并进行json编码时,它会转换×יב טי××ת××希伯来文文本

{
    "taskdetails": {
        "customerID": "37031",
        "name": "החברה הכלכלית",
        "destination": null,
        "quantity": "0.000000",
        "containerNO": "0",
        "cell": "0000000000",
        "startdate": "29/12/2013 00:00:00"
    }
}
但在某些情况下,JSON字符串返回NULL。您是否可以看到它返回的目的地,但实际值存储在DB中为××יב טי××ת×××

知道哪里出了问题吗?并帮助解决问题

我的PHP脚本:

$JSONarray=array(); //Inititlizing JSON
while($row = mysql_fetch_array($queryExe)){
$JSONarray['customerID'] = $row['AUTO_ID'];
$JSONarray['name'] = $row['Customer_Name'];
$JSONarray['destination'] = $row['Destination'];
$JSONarray['quantity'] = $row['Quantity'];
$JSONarray['containerNO'] = $row['Container_Number'];
$JSONarray['startdate'] = $row['startdate'];
}
//Output the final JSON
echo json_encode(array("taskdetails" => $JSONarray));
当我使用:

mysql_集_字符集(“utf8”)

我得到了以下输出:

{"taskdetails":{"customerID":"37031","name":"\u00d7\u201d\u00d7\u2014\u00d7\u2018\u00d7\u00a8\u00d7\u201d \u00d7\u201d\u00d7\u203a\u00d7\u0153\u00d7\u203a\u00d7\u0153\u00d7\u2122\u00d7\u00aa \u00d7\u00a2\u00d7\u017e\u00d7\u00a7 \u00d7\u201d\u00d7\u017e\u00d7\u00a2\u00d7\u2122\u00d7\u2122\u00d7\u00a0","destination":"\u00d7\u02dc\u00d7\u2122\u00d7\u2018 \u00d7\u02dc\u00d7\u2122\u00d7\u00a8\u00d7\u00aa \u00d7\u00a6 \u00d7","quantity":"0.000000","containerNO":"0","cell":"013511004211315","startdate":"29\/12\/2013 00:00:00"}}
在我登录Jsonlint.com之后,它会出现如下情况:

{
    "taskdetails": {
        "customerID": "37031",
        "name": "החברה הכלכלית עמק המעיינ",
        "destination": "טיב טירת צ ×",
        "quantity": "0.000000",
        "containerNO": "0",
        "cell": "0000000000",
        "startdate": "29/12/2013 00:00:00"
    }
}
现在一切都出了问题

尝试的其他选项:(并非一次全部)

当我检查此项时:

  $charset = mysql_client_encoding($con);
  echo "The current character set is: $charset\n"; 
输出:

当前字符集为:latin1


连接时,应将数据库连接编码设置为UTF-8。您似乎正在使用不推荐使用的MySQL API,因此要设置编码,您需要将其添加到程序中:

mysql_set_charset("utf8");

在我使用utf8之后,我仍然面临着@joniNow问题,您是否得到了预期的结果:JSON包含与数据库中相同的字符串。理想情况下,您应该修复数据库,以便if实际将希伯来语文本存储为清晰的希伯来语文本,但如果您不能或不想这样做,您可以使用一些解决方法。请建议我。。所以我可以试试这些来解决这个问题。。但是转换整个数据库只是一个小问题。。但我可以用它来做未来的数据。。那么我现在的数据会发生什么呢??我如何做一个变通的方法和想法来改变字符??数据库的一个快速修复方法是将列编码转换为拉丁1,然后将表转换为utf8;您可以使用两条SQL语句来实现这一点。一种适用于99%文本的解决方法是通过字符集转换函数传递它,例如
iconv(“UTF-8”,“CP1252”,“$text”)
它表示错误:注意:iconv()[function.iconv]:在中的输入字符串中检测到非法字符
mysql_set_charset("utf8");