• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

json编码中文如何会乱码

php 搞代码 4年前 (2022-01-24) 18次浏览 已收录 0个评论

json编码中文怎么会乱码
以下代码编码后怎么是\u的乱码,之前用JAVA编码JSON后都是正常的中文呀,请问这是怎么回事,该怎么解决。

<br />		$test = new stdClass();<br />		$test->a = ("中文名称");<br />		$test->b = ("测试程序。");<br />		echo json_encode($test, JSON_FORCE_OBJECT);<br />

以上代码编码结果为:
{”a”:”\u4e2d\u6587\u540d\u79f0″,”b”:”\u6d4b\u8bd5\u7a0b\u5e8f\u3002″}
——解决方案——————–
echo urldecode ( json_encode($test, JSON_FORCE_OBJECT) );
添加urldecode 就ok了
——解决方案——————–
那不是乱码,中文字符json_encode 之后是那样的。
——解决方案——————–
\u 可不是乱码,人家是为了防止乱码转了unicode码而已
——解决方案——————–
那个不是乱码,是union码。
如果要正常显示中文,可以参考:http://blog.gaodaima.com/fdipzone/article/details/28766357
——解决方案——————–
json_encode 是编码函数,产生的自然是编码后结果
其中出现一些你不能识别的成分,不也是很正常的吗?

$s = "中文名称";<br />echo urlencode($s); //%E4%B8%<div>……本2文来源gaodai.ma#com搞##代!^码@网3</div><code>搞代gaodaima码</code>AD%E6%96%87%E5%90%8D%E7%A7%B0<br />echo base64_encode($s); //5Lit5paH5ZCN56ew<br />

既然你能接受这些编码的结果,那又为何不能接受
echo json_encode($s); //”\u4e2d\u6587\u540d\u79f0″
这样的结果呢?

至于为什么要用 unicode 十六进制内码 表示,个人认为是 php 的败笔
1、由于要取得 unicode 内码,所以就有传入数据的字符集识别问题。正因为他不能识别字符集,所以 json 函数只适用于 utf-8
2、传递到浏览器的任何字符集的文字,都会被浏览器统一转换为 unicode 编码,所以 json_encode 所做的编码转换是没有意义的。浏览器依然要有将十六进制串转换成 unicode 内码的动作


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:json编码中文如何会乱码
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址