EclipseIDEA环境下设置jvm默认编码

Posted 小熊vip

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EclipseIDEA环境下设置jvm默认编码相关的知识,希望对你有一定的参考价值。

这这有个小程序,大家可以在自己机器上跑一下:

import java.nio.charset.Charset;

public class Encoding 
    public static void main(String[] args) 

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

打印结果是什么?
GBK
估计大多数人的机器打印的结果是GBK?因为我们很多人系统默认编码就是GBK.
我们查看jdk文档可以看到:
//java.nio.charset.Charset
static Charset defaultCharset()
Returns the default charset of this Java virtual machine.
//java.lang.System
static String getProperty(String key)
Gets the system property indicated by the specified key.

上面两个说白了上面两个方法获得的是系统默认的字符集编码,所以我们一般获得的是GBK,因为我们大部分用的是中文版的window系统。。。。。

但是我们能不能改呢?肯定能!
eclipse上
右键工程–>properties–>Resource–>textfileEncoding

看到这里的GBK了吧,也许你早就改过了,所以前面运行结果不是GBK。
试试改成utf-8,再运行程序。是不是发现运行结果变成utf-8了?
为了统一编码,这里我们通常设置成utf-8
IDEA上
File–>Settings–>File Encodings–>Project Encoding

我们改成iso8859-1试试
输出是不是变成了iso8859-1。为了统一编码我们还是改回utf-8吧。【如果你之前没有改过idea的编码,这个位置还有其它几个位置编码可能就是system default即GBK】

这样就完了?
no,no,no!!
我们试着建立一个web项目,web容器采用tomcat

好大的两个GBK…….【声明:IDEA上工程,文件的字符集编码已经设置成了UTF-8,所以不要怀疑是这个原因。】
那么,到底是什么原因呢?我们之前明明就是这样改的,而且成功了哎。

我只想说:可能web项目比较特殊吧,毕竟它运行的时候借助了web容器,比如这里我们使用的是tomcat容器。
那么我们该如何让其回归utf-8呢?
方法当然有,如下:
来到tomcat配置界面:添加虚拟机启动参数:-Dfile.encoding=UTF-8

我们再来运行一遍:

utf-8出来了,有木有。
纳尼,控制台出现了鸟文?
我们继续对IDEA做点修改。
打开idea安装目录下的bin文件夹,找到idea.exe.vmoptions文件并打开
添加一条配置信息:-Dfile.encoding=UTF-8

ok,重启idea,再次运行web项目

世界顿时又美好了。

以上是关于EclipseIDEA环境下设置jvm默认编码的主要内容,如果未能解决你的问题,请参考以下文章

windows 下开发的 java项目 部署Linux服务器 的 问题

容器环境的JVM内存设置最佳实践

系统属性file.encoding在JVM启动后,再次设置无法对系统的默认编码造成影响

eclipseidea重定义目录结构

Vim中文编码问题

Docker环境下Spring Boot应用内存飙升分析与解决