spring的中文乱码问题--tomcat原因

本文探讨了Spring应用在Tomcat上运行时可能出现的中文乱码问题,强调了Tomcat配置可能导致的编码问题。通过检查文件编码、页面编码,并着重介绍了在IntelliJ IDEA中配置Tomcat的VM Options为-Dfile.encoding=UTF-8来解决控制台乱码。同时提到了gradle和maven构建时的编码设置,如在gradle.properties中设置org.gradle.jvmargs=-Dfile.encoding=UTF-8,在pom.xml中添加相关节点来避免乱码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring的中文乱码问题

问题的前提:

请确保代码的文件编码是否为utf-8,和页面的编码格式是否为utf-8,如果都是utf-8编码,视图渲染后在浏览器仍然是乱码,那么就很有可能是Tomcat把你的编码给改为GBK的格式了。
* 那么怎么知道是Tomcat的编码原因呢??*
简单,把编码设为GBK,看看是不是不会发生中文乱码,直接简单。

IntelliJ IDEA运行tomcat时编码错误及如何指定

https://my.oschina.net/u/2337927/blog/666200
刚开始用IDEA,发现一个很奇怪的问题, 传入的中文参数会变成GBK编码. 经过好长时间的跟踪终于把问题定位到了IDEA里配置的Tomcat. 凡是在tomcat里启动的java应用, 不管源码是什么编码, 运行后都是GBK.

解决方法:

Run/Debug Configuration -> Tomcat Server -> Tomcat 7, 在VM Options里面加上 -Dfile.encoding=UTF-8 并应用,更改后, 控制台输出会乱码, 还需要将IDEA的启动环境也配成UTF-8, 在IDEA安装目录下, 打开 idea64.exe.vmoptions , 最后一行加上 -Dfile.encoding=UTF-8
例如我的默认安装路径在这里:
【C:\Users\用户名\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\171.4694.70\bin】
修改后长这个样子了。

-Xms128m
-Xmx750m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Dfile.encoding=UTF-8
-Dide.no.platform.update=true

控制台乱码也可以采用vm options的方式解决:

http://blog.youkuaiyun.com/gisredevelopment/article/details/49078749
添加 JAVA_TOOL_OPTIONS -Dfile.encoding=UTF-8
Tomcat需要在vm options 下设置这个参数:-Dfile.encoding=UTF-8,这样Tomcat就会把资源用utf-8的格式启动


多说几句:在构建工具上的乱码问题:
构建工具,目前接触的有maven、gradle这两个,但在build的时候都遇到了一些编译中文乱码的问题。

gradle构建工具build乱码问题:

gradle 需要在gradle.properties 里设置:org.gradle.jvmargs=’-Dfile.encoding=UTF-8’ 这样gradle的全部文件都会build为utf8的编码格式。
builde.gradle 会自动的读取这个文件。
可能这里有些人会这么写:

//compileJava.options.encoding = 'UTF-8'
//compileTestJava.options.encoding = 'UTF-8'

这是指针对java编译的文件编码

maven

在pom.xml文件中加入节点

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值