提交一个GET请求

在浏览器地址栏或搜索框输入地址:http://www.baidu.com/content/衣服?keyword=衬衣

其中的中文会被浏览器进行编码,具体编码情况请参考阮大神:关于URL编码

然后,请求需要经过这些处理

1.web server,tomcat

在这里tomcat 有这么两个属性

 1.URIEncoding:这个可以强制指定用什么编码处理URI,默认是ISO-8859-1;

 2.useBodyEncodingForURI:这个设置为true,我们就可以用request.setCharacterEncoding()来设置编码了. 注:这个属性只影响后面的参数

2.servlet/filter
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>

这个地方查看源码,只是设置了request的编码,跟URI没有任何关系

if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {
request.setCharacterEncoding(this.encoding);
if (this.forceEncoding) {
response.setCharacterEncoding(this.encoding);
}
}

总结

经过上面的分析,提出的解决方法是设置tomcat参数。但是这种解决方案会遇到客户端编码不确定的问题,这样又需要引入编码自动分析,增加了后台的复杂性,一般的应用都没有太大的这方面必要。所以这里推荐在前台使用encodeURIComponent(encodeURIComponent(URI))进行两次编码,并且在后台使用URLDecoder.decode(param, "utf-8")进行解码

最新文章

  1. [LeetCode] Random Pick Index 随机拾取序列
  2. Devexpress使用经验1
  3. HDU 5937 Equation
  4. C#的多态性
  5. 使用Memcached提高.NET应用程序的性能
  6. skill-判断浏览器
  7. SQL优化之索引
  8. Java IO5:序列化与反序列化
  9. (Relax 数论1.6)POJ 1061 青蛙的约会(扩展的欧几里得公式)
  10. 一张图告诉你什么是Linux distributions...
  11. PHP中文关键词匹配
  12. Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式
  13. 【转】AB实验设计思路及实验落地
  14. BZOJ 1010: 玩具装箱toy (斜率优化dp)
  15. Centos 上部署 tomcat7
  16. Jenkins实现自动运行jmeter脚本
  17. web 页面间传值 js 封装方法
  18. Statement和PreparedStatement的异同
  19. MATLAB GUI图片添加背景
  20. YII2中验证码的使用

热门文章

  1. Grass is Green
  2. CodeForces - 1004B
  3. CentOS7 升级gcc版本
  4. 3、CSS基本介绍
  5. 39、请用代码简答实现stack
  6. JS设计模式——4.继承(概念)
  7. 深入理解Spring系列之十:DispatcherServlet请求分发源码分析
  8. 摘: 给Shapre命名
  9. UOJ#58/BZOJ 3052【WC2013】糖果公园
  10. window7 开启自带 ftp