gpt4 book ai didi

PHP 输出 JSON Web 服务字符集 UTF-8 错误

转载 作者:可可西里 更新时间:2023-11-01 13:08:01 24 4
gpt4 key购买 nike

我正在托管 PHP 输出的 JSON 格式的 Web 服务。

我在数据库中有希伯来语数据集,我将其作为输出发布到 Web 服务。

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

JSON:

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

但是这个"×ברר"可以被Android/Iphone解析器读取并将其转换为原始的希伯来语。但是我在 "name"中遇到错误: "×∼ר ×רמה ×™×–×•× ×•×'×™× ×•×™ ×'×¢"מ",。其中 " 位于字符串之间,因此 JSON 无效并显示错误!

enter image description here

为了解决这个问题,我使用 UTF-8"××'רר" this 转换为希伯来语 "נב"。但在这种情况下,问题仍然存在:

PHP:

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

JSON:

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

但问题依然存在:

enter image description here

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

"name":"מחצבות כפר גלעדי-חומרי מ�"
  • 我该如何克服这个问题?
  • 我需要使用任何其他特定编码吗?

注意:数据库中的数据不能更改,解决方法应该是输出到JSON。

DB中的数据存储方式如下图所示:

name

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

我的输出 JSON 的 PHP 脚本:

<?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

关于PHP 输出 JSON Web 服务字符集 UTF-8 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18009075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com