转载: https://blog.csdn.net/u014424628/article/details/49429393
这这有个小程序,大家可以在自己机器上跑一下:
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());
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
打印结果是什么?
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
注:如果是idea如果是64位:修改:
我在修改了idea.exe.vmoptions文件参数后,重启idea,运行tomcat控制台同样乱码,之后我又同样修改了idea64.exe.vmoptions,重启运行,perfect
ok,重启idea,再次运行web项目
世界顿时又美好了。