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>