做博客项目中遇到浏览器的参数提交到服务器产生乱码现象,于是对乱码问题一探究竟。
1、网页乱码是怎么发生的
为了搞清楚,这个网页乱码可能出现的情况,我把网页的chaset,文件的编码方式和response的编码格式都作为变量来测试。结果如下:
由此我断定,网页的编码方式和解码方式一样的时候,才不会出现乱码现象。而浏览器的解码方式response的header设置的charset > meta charset。
2、浏览器给服务器传参乱码
浏览器给服务器传参乱码,有可能是浏览器在传给服务器之前就乱码了,也有可能是传给服务器,然后服务器的解码方式和传过来的参数的编码不一致导致的乱码;
服务器解码方式不一致,服务器需要加一个拦截器进行解码。
但是为什么,会在传给服务器之前就乱码呢。比如我使用百度的ueditor,在页面是gbk的环境下,上传图片,图片的名字是中文,就会出现filename字段在还没上传到服务器的时候就乱码了;但是,如果页面环境是utf-8的时候,就不会出现这样的问题。
我猜是浏览器浏览网页,该网页是以什么编码解析的,就会以什么编码去解析它需要读取的文件,而且是它的变量在内存中也是以这种编码保存的(如果不用js设置变量的编码方式的话;实际上我不知道有没有方法可以用js转换传过去服务器的变量的编码方式,如果有欢迎告知),当遇到这种编码不支持的字符的时候,就乱码了,这个时候还没发送到服务器。
再比如一个,gbk的网页,引入了编码方式为utf-8的js文件,这个js里面的中文就会出现乱码。
时间: 2024-10-15 04:59:34