Spring中的乱码问题

Posted 浮舟z

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring中的乱码问题相关的知识,希望对你有一定的参考价值。

最近发现一个问题, 中文编码保存到数据库里显示正确, 打印出来却是一串问号, 然后怀疑是平台默认编码的问题, locale命令显示是UTF-8正常, 然后单独编写一个java文件, 编译然后Java命令执行显示也很正常, 唯独在这个系统里打印出来是乱码。 然后怀疑还有其他的编码影响, 经过一番查找, 发现这两个代码:

System.out.println("file.encoding");
System.out.println(Charset.defaultCharset());

输出结果:

ANSI
ASCII

说明不是UTF-8,然后在系统里手动设置System.setEnv("file.encoding", "UTF-8");,然后file.encoding属性打印出来是UTF-8没错, 但是Charset.defaultCharset()还是ASCII。

然后再查找一番, 发现stackoverflow上的一个答案, 他指出file.encoding属性必须在jvm启动的时候指定, 因为进入main方法的时候系统使用的默认编码已经被缓存了, 所以在系统里手动set编码是没用的。因此在启动时加上编码参数:

java -Dfile.encoding=UTF-8 …

然后中文打印出来正常。

另外,Charset.defaultCharset()的值是和file.encoding属性对应的。


https://stackoverflow.com/questions/361975/setting-the-default-java-character-encoding

以上是关于Spring中的乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

再谈Spring Boot中的乱码和编码问题

spring MVC接收中文乱码问题

170117spring解决乱码

spring解决乱码

Spring MVC @ResponseBody注解返回值中文乱码问题

spring mvc从@ResponseBody取到json发现中文乱码