Spring/Tomcat Rest开发 配置UTF-8编码

本文详细介绍了在Spring/Tomcat环境中配置UTF-8编码的全过程,包括IDEA设置、Maven/Gradle编译选项、Tomcat配置、web.xml配置以及Spring MVC的处理。通过这些步骤,确保开发、HTTP请求和响应都在UTF-8编码环境下正确运行。
摘要由CSDN通过智能技术生成

环境/框架:windows7+Intellij Idea+jdk8+tomcat+Spring

起因:写微信支付接口时遇到过很多编码错误问题,比如:
1. 收到了微信返回、console里打印出来错误描述是“???mchid???appid???”
2. 返回给设备端的出错描述,postman里看到是“JSON???????”
3. 另外这里提到的签名checksum计算错误

目的:使代码开发、程序运行和读写http消息时都使用UTF-8编码

Disclaimer:只是整理自己遇到且试过的(没有数据库、html页面相关)。解决思路和大部分代码来源都是StackOverflow(感谢SO答主)。一些能原帖链接已经附上、其他用英文google应该都能找到。

Checklist

  1. IDEA settings -> file encodings 都设成UTF-8,目的:将项目源文件都以UTF-8保存。

  2. [optional] 修改IDEA bin/目录下的idea.exe.vmoptions/idea64.exe.vmoptions文件 或通过Help菜单的Edit Custom VM Options、增加 -Dfile.encoding=UTF8参数,目的:使IDE在UTF-8下运行。
    (仔细想了想其实说不出这个有什么具体作用…但因为遇到过console打印乱码问题,为了限制/缩小排查范围就加上了。)
    以上参考intellij-idea-incorrect-encoding-in-console-output

  3. 设置mavengradle编译选项,具体参考:
    Maven文档
    how-to-configure-encoding-in-maven
    show-utf-8-text-properly-in-gradle
    目的:保证生成的class文件(特别是其中的static String)都使用utf8编码。

  4. 配置tomcat。用到的是
    (1)jvm_opts增加 -Dfile.encoding=UTF8 (可以修改catalina.bat或Intellij的run configuration),目的:保证在运行各webapp时用UTF8而不是系统默认编码(开头提到的checksum问题)。
    (2)server.xml里<Connector>增加属性 URIEncoding="UTF-8",目的:保证GET方法的url(及query string)使用utf8解析。
    两个非常详细的参考:
    Tomcat FAQ CharactorEncoding (里面的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值