https://blog.csdn.net/weixin_30685047/article/details/94999645

客户端传来UTF-8的表单,服务器的asp用的是GBK,因而服务器端会按照GBK编码读取表单,因而就会乱码 实际上这个时候在服务器里拿到的表单已经是被GBK处理过了的,而要显示出正确的文字,需要把GBK编解码过的文字重新编码,然后用对应的UTF-8再次解码,所以实际上对二进制做的是UTF-8解码从而得到GB2312环境下的正确显示。

原因是,在GB2312里面,汉字两字节一编码,UTF-8三字节一编码,GBK会替换一些不支持的编码为?,ASCII值为63,相当于修改了UTF-8的二进制数据,偶数个汉字运气好,奇数个汉字显然结尾的数据会被破坏,嗯,这就是原因。

解决思路显然是想办法不要让服务器先用GBK进行表单解码了,因而方法有二:

  1. 想办法拿到二进制的表单,然后直接使用正确的代码页解码;
  2. 看能不能把asp换到UTF-8的环境下吧。

标签: none

添加新评论