前言:
我所处的业务线主要使用的语言是Java,一般是用jboss或者tomcat装载之后通过界面访问,在平常的测试工作会遇到如下问题:由于jboss和tomcat编码或者Linux机器编码设置的问题总是会导致应用在加载之后,前端访问页面出现中文乱码或者中文搜索功能无效等问题;而与此同时,我自己所使用的测试脚本偏重于python/shell, 用vim编辑的时候,也经常会出现界面中文乱码的问题.面对以上问题,本文从以下两个角度阐述编码问题:
1.项目中遇到的服务器加载应用乱码问题
2.vim中遇到的乱码问题
先简单的介绍下基本的编码(常用):
ASCII:8位,最高位为0,共128个字符编码, 33个控制字符,95个可打印字符
GB2312:16位,6000多个常用汉字, 对ASCII码的中文扩展
GBK: 16位,2w+, 微软标准,适应于简繁体共存的环境
GB18030:32位, 适用于任何中文
UTF-8:针对Unicode的可变长度字符编码,使用一至六个字节为每个字符编码
其中UTF-8的编码方式如下:
图1
......
数据的发送端 - 浏览器
浏览器会把URL或者POST提交的内容编码之后发送给服务器。
网页中contentType("text/html;charset=gbk2321")的作用:告诉浏览器网页中的内容是什么编码的。
通常在做表单提交时,浏览器会根据contentType的内容来对post提交的内容进行编码,然后才发送给服务器的。这里要注意: contentType是对http头中的信息,而不是meta中的类型的。
Get请求 Get提交时不同的浏览器会对url进行不同编码格式的编码,有的是utf-8,有的是,gbk等。由于get方式提交的时候, 用户只输入了一个url请求,这时浏览器并没有什么编码可以参照,所以就是用了浏览器自身的编码方式。
Post请求 服务器先前已经返回了网页给浏览器,所以post提交的时候,浏览器会更具网页的contentType来对数据进行编码。 post提交的时候,浏览器通常会根据contentType来对requestbody中的数据进行编码。
......
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。