博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
又见JavaWeb的中文乱码
阅读量:6444 次
发布时间:2019-06-23

本文共 753 字,大约阅读时间需要 2 分钟。

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

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

一、背景是这样子的:

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

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

二、乱码来了:

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

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

三、判断:

1.抓HTTP请求的数据包,确认浏览器发出来的数据编码是utf-8。2.用HttpServletRequest取二进制码流,确认此时收到的数据编码是utf-8。3.为啥用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-8

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

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

转载地址:http://ydpwo.baihongyu.com/

你可能感兴趣的文章
const的各种不同意义
查看>>
Git操作详解
查看>>
I/O 阻塞 中断的注意点
查看>>
什么是HTTP Basic Authentication?
查看>>
python --RecursionError: maximum recursion depth exceeded in comparison
查看>>
Highcharts使用二维数组生成图表
查看>>
spring bean作用域
查看>>
20180416
查看>>
判断一个数是否为素数
查看>>
15年用canvas画的
查看>>
HTML5新特性
查看>>
log4j.appender.AFile.File日志的相对路径
查看>>
乒乓球比赛模拟分析
查看>>
多元线性回归的预测
查看>>
Django——Model
查看>>
servlet体系和生命周期
查看>>
C#前台线程和后台线程区别
查看>>
服务器开发工具
查看>>
个人项目1修改版——自动生成四则表达式
查看>>
更改mysql数据库所在目录
查看>>