在第一次调试时,前端收到后台响应时,英文和数字可以正常显示,中文出现乱码:
我们将程序中的文本用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:
前端可以正确显示中文,问题解决: