用 JSON 来避免中文乱码问题

在使用 API 进行姓名和身份证号查询时遇到中文乱码问题,通过Wireshark抓包分析发现Ajax和Postman传输数据相同但结果不同。经过研究,发现问题出在中文编码上,解决方案是使用JSON.stringify()将数据转换为Unicode,确保网络传输时编码一致,从而避免中文乱码。总结指出JSON在网络传输中能自动处理Unicode编码,是解决此类问题的有效方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题来源

最近在用别人提供的 API 搞事情(用姓名和身份证号查准考证号), 用 Postman 进行测试,提交的是表单里面含有中文。具体如下图:

搞事情

我按照上面的教程,确实可行,如下图:

一步一步来

乐于助人的我,想做个 Web 网站来帮助一些人,so,我开始用 Postman 进行测试。

第一步

我打开 谷歌游览器 的开发人员工具(F12) Network 项,看刚刚那个 Ajax 传输了啥,如图下:

很好

嗯~ 这么简单,我只需要做一个登录界面所有的问题就解决了,好,用Postman 测试一下吧(此时此刻我想我为啥要用 Postman 来进行测试)。

深坑

填好了 Postman 上的数据,点击 Send,什么???这是啥

深坑

程序员陷入了沉思,一直在想为什么。此后每天下班就一直在调这些东西。有一天灵感来了,我想这用 Wireshark 进行抓包,我就知道都传来啥,好打开 Wireshark 过滤条件为 tcp.port == 7066,抓的包如下:

游览器 Ajax:

Ajax

Postman:

Postman

我仔细的对比了下,每有什么问题呀,传输的数据都一样!

迷茫后的光芒

下班了,继续想。
两个传输的数据都一样,但结果不一样,试下把 jb(级别)的参数置为空:

哈哈

嗯!问题就在于中文编码这里!

我又试了不填中文,填中文的 Unicode 字符集。

问题

这里 Ajax 和 Postman 返回的值竟然都一样,那这就是编码问题!

如何解决

下面是好心人提供的源码。里面的 params = JSON.stringify(ks_data),等等这里 Ajax 传输的数据不就是 JSON 了吗。Postman 传输的是 key&value 形式。

var url = "http://app.cet.edu.cn:7066/baas/app/setuser.do?method=UserVerify";
var ks_data = {
"ks_xm": "",
"ks_sfz": "",
"jb": ""
};
var postdata = {
"action": "",
"params": JSON.stringify(ks_data)
};

光明

我猜想,JSON 在传输字符串的时候,会将所有的字符串转为 Unicode 字符集进行传输。嗯,官网就是这样写的!

json

总结

看来,JSON 很适合网络传输,只关心传输的编码一致就行了,里面的数据会自动传为 Unicode 字符集的。
当这个问题解决时,已经有好多个人的网站可以查了。
最后我四级并没有过。。。
最后的最后这个查准考证的 API,是一个 App 的。

APP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值