繁体   English   中英

在utf-8中的php json_encode问题

[英]php json_encode issue in utf-8

我在php中有以下数组

$array = array(
    array('name'=>'abc', 'text'=>'اسلسصثصض صثصهخه عه☆anton & budi☆' ),
    array('name'=>'xyz', 'text'=>'nice' ),
);

当我使用json_encode时,结果是不同的:

[
  {
    "name": "abc",
    "text": "\u0627\u0633\u0644\u0633\u0635\u062b\u0635\u0636 \u0635\u062b\u0635\u0647\u062e\u0647 \u0639\u0647\u2606anton '<&>' budi\u2606"
   },
   {
    "name": "xyz",
    "text": "nice"
  }
]

为什么结果不是这样的?

[
    {
         "name": "abc",
         "text": "اسلسصثصض صثصهخه عه☆anton &amp; budi☆"
     },
     {
         "name": "xyz",
         "text": "nice"
    }
]

谢谢

因为PHP在编码时不假设/允许非ASCII字符集。 两种结果在解码时都是等效的。

因为它被编码为JSON。 使用您的第一个输出,您绝对100%确定浏览器将收到您想要的内容。 第二个,你不能确定。

尝试这个:

//for encode
json_encode(array_map('base64_encode', $array));

//and for decode
array_map('base64_decode', json_decode($array));

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM