在某个小程序项目中,我们选择使用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:

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

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

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

相关文章:

  • 2021-11-28
  • 2021-08-08
  • 2021-04-21
  • 2021-10-14
  • 2021-11-28
  • 2021-08-08
  • 2021-09-22
猜你喜欢
  • 2021-09-05
  • 2022-01-15
  • 2021-07-28
  • 2021-10-09
  • 2021-12-15
相关资源
相似解决方案