简单翻了一下记录,我已经写了至少4篇关于编码和乱码的博客了,每次都觉得自己懂了。

实际上,这次的遭遇证明了“真懂”是一种很难达到的境界,吾辈仍需努力!

一、背景是这样子的:

.一个J2EE项目。
.项目的.java文件编码设置为utf-。
.项目的.jsp文件编码设置为utf-。

事实上以上设置和程序运行过程中动态产生的编码和乱码没有关系。

二、乱码来了:

.jsp调用ajax,以POST的方式向控制层传参数(有中文)。
.ajax提交数据的编码方式为utf-。
.SpringMVC的接收数据的编码方式为utf-。

然而从控制层打印出来的中文编码显示其为gbk编码!

三、判断:

.抓HTTP请求的数据包,确认浏览器发出来的数据编码是utf-。
.用HttpServletRequest取二进制码流,确认此时收到的数据编码是utf-。
.为啥用SpringMVC的注解 @RequestBody一格式化,就变成gbk了呢?

所有的注意力都成功的被SpringMVC误导过去了,各种检查自己的SpringMVC的配置。确认自己的配置没有问题。

四、还有谁?

还有tomcat!也许确切的说,还有tomcat的servlet!

在SpringMVC处理之前,是tomcat先接收的码流。检查tomcat的编码,确实是gbk。

想起来了,之所以这么头疼,是因为以前的tomcat默认编码是iso-8859-1,而这个可以很轻松的转成utf-8,而gbk不能!

五、解决:

在catalina.bat的最前面加入set JAVA_OPTS=-Dfile.encoding=UTF-

大多数的纠结,往往换了都是简单的配置,或者非常不起眼的一行代码。

这也许就是于细微之中见功力?学海无涯……

最新文章

  1. Jquery tab 选项卡 无刷新切换
  2. Activating Google Cloud Storage
  3. MYSQL存储过程中的IN、OUT和INOUT
  4. NOIP2015 普及组(Junior) 解题报告
  5. 一个gif远程crash你的微信!
  6. UIGraphicsBeginImageContext - 位图上下文
  7. BZOJ 2741: 【FOTILE模拟赛】L [分块 可持久化Trie]
  8. 解决 mac 10.14.4 无法 sublime text 3207 安装 Package Control,以及安装第三方包报错 `Package Control There are no packages available for installation`
  9. Verify_Execute 验证SQL语句执行结果
  10. devtools进行热部署
  11. [转]原生JS-查找相邻的元素-siblings方法的实现
  12. UVA215-Spreadsheet Calculator(模拟+拓扑排序)
  13. 前端页面调用Spring boot接口发生的跨域问题
  14. Android Studio导入第三方jar包或依赖工程的方法
  15. CSS3美化网页!!
  16. #python str.format 方法被用于字符串的格式化输出。
  17. html5 canvas显示文字(写上5个字,纪念我那刚刚逝去的爱情)
  18. JSBinding+Bridge.NET:Inspector拖变量支持
  19. v-if和v-show区别
  20. 雷林鹏分享:C# 运算符重载

热门文章

  1. JDBC使用MySQL存储过程错误
  2. 【iCore3 双核心板】例程二十六:MODBUS TCP实验——电源监控
  3. A trip through the Graphics Pipeline 2011_13 Compute Shaders, UAV, atomic, structured buffer
  4. 遍历echsop的region表形成缓存的程序
  5. Metasploitable 2系列教程:信息收集
  6. idea使用心得(1)-快捷键用法
  7. Hadoop学习笔记(一)从官网下载安装包
  8. jQuery源代码阅读之一——jQuery总体结构及jQuery构造函数
  9. 20145320《Java程序设计》第9周学习总结
  10. git server服务器搭建