zoukankan      html  css  js  c++  java
  • 又见JavaWeb的中文乱码

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

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

    一、背景是这样子的:

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

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

    二、乱码来了:

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

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

    三、判断:

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

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

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

  • 相关阅读:
    yum---Linux软件安装与管理
    Python Cheetah01
    Python 改变字体颜色
    DenyHosts安装及配置
    Python 文件I/O
    Python 列表(List)
    Python 字符串
    Python 循环语句
    Python 条件语句
    Python 系统性能信息模块psutil
  • 原文地址:https://www.cnblogs.com/yoyotl/p/5982885.html
Copyright © 2011-2022 走看看