首页 > 编程语言 >又见JavaWeb的中文乱码

又见JavaWeb的中文乱码

时间:2023-01-04 15:46:12浏览次数:46  
标签:编码 中文 utf JavaWeb tomcat SpringMVC gbk 乱码

简单翻了一下记录,我已经写了至少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

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

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

标签:编码,中文,utf,JavaWeb,tomcat,SpringMVC,gbk,乱码
From: https://www.cnblogs.com/kn-zheng/p/17025027.html

相关文章

  • Java 中文字符串编码之GBK转UTF-8
    写过两篇关于编码的文章了,以为自己比较了解编码了呢?!结果今天又结结实实的上了一课。以前转来转去解决的问题终归还是简单的情形。即iso-8859-1转utf-8,或者iso-8859-1转gb......
  • 中文网页显示定制字体
    中文网页显示定制字体一直是个大问题,英文简单,毕竟就几十个字符而已。用@font-face加载字体就好了。例如Bootstrap里@font-face{font-family:'GlyphiconsHalflings';s......
  • Outlook 2019 for mac v16.70 beta中文激活版
    Outlook2019是一款专业的电子邮件收发软件,outlook可以将您的电子邮件,日历和联系人集中在一起,提高工作效率,Outlook2019拥有极强的兼容行,很多网站的邮箱都可以加入到其中,让......
  • spring-boot:run 中文乱码
    <plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId>......
  • Bettertouchtool for Mac(触摸板增强神器)v3.986中文正式版
    Bettertouchtool中文正式版更新了,Bettertouchtool破解版带给大家。BettertouchtoolforMac是Mac平台上一款功能强大的触摸板辅助工具,bettertouchtool破解版支持的拓展设备......
  • 黑马程序员Javaweb综合案例错误总结整理
    案例整理(呕心沥血的教训)其他的我大部分还是不知道那里出了问了,我这个新建的项目must3终于成功了那个品牌名称和企业名称没有,是要在BrandMapper里加注解@ResultMap......
  • 极乐迪斯科最终剪辑版 Disco Elysium for Mac (冒险探索游戏)vb451f056 中文原生版
    DiscoElysium是一款令人惊叹的RPG游戏的最终版本。你的角色是一个拥有一套独特技能的侦探,他将探索整个城市地区。命运会带你找到难忘的角色。进行审讯、解决谋杀案或接受贿......
  • python pillow保存中文字体居中
    importosimportcv2importnumpyasnpfromPILimportImage,ImageDraw,ImageFonttxtList=["保存单帧","保存多帧"]height=300width=1068#word=wo......
  • JAVA判断字符串是否包含中文或者包含中文字符
      privatestaticPatternpattern=Pattern.compile("[\u4E00-\u9FA5|\\!|\\,|\\。|\\(|\\)|\\《|\\》|\\“|\\”|\\?|\\:|\\;|\\【|\\】]");/***字符串是否......
  • egg-validate 效验实现中文提示配置
    在使用egg.js进行后台接口开发过程中,对参数的效验是必不可少,这里就用到了egg-validate这个插件,由于egg-validate是默认使用英文进行提示,所以对前端提示不是特别友好,所以我......