最近又碰到了中文乱码问题,这里我没有把数据库牵扯进来,先说下我的环境,servlet 容
器使用 Tomcat6.0,浏览器 FireFox3.0、IE6,涉及字符编码设置的地方我的思路就是编码的
地方都统一使用 UTF-8,具体配置如下:
1.所有页面的 charset 设置为 UTF-8。
2.Tomcat 的 URIEncoding 默认是 ISO-8859-1,而我设置为 UTF-8,主要是想解决中文命名
的文件以及请求以 get 方式提交有可能出现的乱码问题。
3.添加过滤器,调用 request.setCharacterEncoding("utf-8")方法将 request 的字符集设定为 utf-
8,解决请求以 post 方式提交的乱码问题。
其实这样的设置貌似是不会再出现乱码问题了,不过,问题依旧来了 ,如果我在浏览器的
地址栏中输入中文参数提交,返回的页面却出现了乱码。真搞不明白到底是哪里出了问题
说起来对中文乱码的问题一直是一支半解,出现乱码了,网上搜罗了一大堆资料,按照网
上的配置,问题到是解决了,不过原理却搞的很模糊,一个请求发送到服务器,服务器业
务逻辑处理后返回一个页面,这中间涉及的字符集转换,编码,解码过程一概不清楚。这
次,折腾了半天,总算是更进一步了解了字符编码问题,这里做个总结。
先看我的总结,有不对的地方欢迎批评。
首先我们看下,一个请求响应的流程
浏览器 IE/FireFox ----------->Servlet 容器------------------------>显示页面
编码 使用容器的 URIEncoding 转码 解码
我把用户发送请求方式不同引起的中文问题划分了四种类型:
1、表单的 get 提交
2、表单的 post 提交
3、页面链接传递中文参数
4、地址栏中参数直接输入中文提交
1.首先我们看表单 get 方式提交
浏览器根据页面的 charset 编码方式对页面进行编码,然后提交至服务器,首先进入对
应的字符编码过滤器(如果有的话),不过 Tomcat6.0 对于 get 提交方式采用的是 server.xml 文
件中的 URIEncoding 编码方式,而并不会采用过滤器中设置的编码,那么根据我的环境设
评论0
最新资源