url 发送请求乱码解决。

发布于 2021-11-27 17:38:19 字数 3535 浏览 639 评论 1

来源:http://blog.csdn.net/shiqidide/article/details/6987449

最近遇到的这个问题,在百度找到的 发出来!作者地址是上面的网站

最近又碰到了中文乱码问题,这里我没有把数据库牵扯进来,先说下我的环境,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编码方式,而并不会采用过滤器中设置的编码,那么根据我的环境设置,jsp页面都使用UTF-8的编码,Servlet容器的URIEncoding也设置为UTF-8,则servlet不用进行转码即可正确解码,获得正常的中文字符串。那么,响应页面的中文因为页面的统一编码(UTF-8)自然也会正常显示。当然,如果我们Tomcat的URIEncoding设置为其他非UTF-8的编码方式时,页面的内容进入Tomcat解析时,因为Tomcat和页面的编码不统一,就需要转码。例如,如果我们采用Tomcat默认的ISO-8859-1,那么当我们使用request.getParameter("yourVariable ")获取表单参数值时其实Servlet就进行了转码,方式为UTF-8-->ISO-58859-1(我的页面charset都是UTF-8),类似于这样

Java代码 
复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌若浮生 2021-11-29 17:28:12

在你Tomcat中设置编码为UTF-8的地方增加一个属性{seBodyEncodingForURI="true"},从此无忧了,效果如何,用了的都说好

其实很多时候不建议页面自己转码的,一般转码不是针对中文这种情况,而是出现了URL中不允许使用的字符时

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文