记一次中文乱码问题的解决

在某个小程序项目中,我们选择使用c++作为后端语言,server2012作为开发平台,

在第一次调试时,前端收到后台响应时,英文和数字可以正常显示,中文出现乱码:



我们将程序中的文本用UE打开,发现编码为UTF-8,和前端同学的编码一致:


我们新建三个记事本,输入劲爆五人团,分别使用UTF-8,ASNI,unicode保存:




然后使用UE打开,选择编辑--十六进制模式,可以看到,UTF-8下劲爆五人团的十六进制值为:

E5 8A B2 E7 88 86 E4 BA 94 E4 BA BA E5 9B A2


ASNI:BE A2 B1 AC CE E5 C8 CB CD C5

Unicode:B2 52 06 72 94 4E E2 56

我们在缓冲区发送前加上断点,运行:


调试-窗口-内存,输入buffer变量名:


":"的ASCII为22 3a 22 因此不难看出此时缓冲区中劲爆五人团的十六进制值已经更改为

BE A2 B1 AC CE E5 C8 CB CD C5 为ASNI编码值

我们尝试使用转义输入UTF-8的编码值:


再一次调试,缓冲区中劲爆五人团的十六进制值已经重新变更为

E5 8A B2 E7 88 86 E4 BA 94 E4 BA BA E5 9B A2 为UTF-8的编码值 那么问题是否解决了呢?

我们来看前端收到的应答 发现依然是乱码:


让我们使用fidder模拟前端请求,抓包下来看看问题究竟出在哪里:


可以看到fidder收到的也是乱码:


查看原始应答报文,发现问题所在:Content-Type: text/html; charset=ISO-8859-1

为了目前调试方便,修改为gb2312:


前端可以正确显示中文,问题解决:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值