在URL中传参的时候常常需要传入中文,这个时候就需要对中文参数进行编码,即URLEncode.但是,常常是Encode两次,而不是一次,为什么呢?

首先要知道,tomcat会自动解码一次;

这样的话,如果只Encode一次就传过去,会出现两种情况:

1.Tomcat的decode字符集与你Encode的字符集一致,正常显示中文;

2.decode与encode字符集不一致,乱码;

现在假设encode两次,那么:

tomcat解码一次,将encode一次的字符串传出去;

程序员手动decode一次,自主指定字符集,只要给定的字符集与编码时一致,就能够成功解码。

总结:encode两次是为了获取解码字符集的控制权,将解码字符集的设定从Tomcat设值中解放出来,下放到java代码中去,让程序员控制。

暂时只能了解到这里,后续再补。

附:搞清tomcat中的编解码  http://www.xuebuyuan.com/1287083.html

最新文章

  1. Java中 实现多线程成的三种方式(继承,实现,匿名内部类)
  2. JAVA编程规则【转自java编程思想】
  3. GDB的Breakpoint, Watchpoint和Catchpoint
  4. Cocos2d-X3.0 刨根问底(六)----- 调度器Scheduler类源码分析
  5. ES6:JavaScript 新特性
  6. NOIP2005 过河
  7. java 执行sql脚本的3种方式 (ant,ibatis,ScriptRunner)
  8. zzuoj 10408: C.最少换乘【最短路dijkstra】
  9. poj 3436 (最大流)
  10. ajax调用后台Java
  11. GetWindowRect和GetClientRect的异同
  12. laravel部署创建新项目 助记
  13. day44-Celery异步分布式
  14. JavaScript 概述
  15. java中path和CLASSPATH的配置和意义解析
  16. asp.net web api集成微信服务(使用Senparc微信SDK)- z
  17. Oracle查询行对应block_id,file_id
  18. (笔记)Mysql命令select:当前选择(连接)的数据库
  19. Linux 常用命令标记
  20. AIX查看系统安装时间和运行时长

热门文章

  1. CSS学习目录
  2. Example of BeanFactoryAware in Spring--转
  3. Deep learning:四十八(Contractive AutoEncoder简单理解)
  4. Android TextView 添加下划线的几种方式
  5. [Azure附录]2.在Windows Server 2012中配置AD域服务
  6. html/css基础篇——GET和POST的区别
  7. SQL Server代理(8/12):使用SQL Server代理外部程序
  8. DNS解析全过程及原理
  9. 大话胖model和瘦model
  10. CSS魔法堂:hasLayout原来是这样!