windows控制台无法编译含有汉字的java程序
解决方法是:控制台输入
javac -encoding utf-8 FileName.java
以下简称那行代码
1.情形1:java程序使用UTF-8方式保存,控制台使用GBK方式编码,那行代码能有效解决问题。
-
cmd控制台编码方式如下
-
java程序及编码方式如下
-
最后控制台输出如下,显然,GBK编码方式不能将UTF-8编码方式中的汉字正确编码。
-
尝试将java程序中的汉字去掉,效果如下。
去掉注释
去掉注释后控制台可以正常运行java程序,但是无法正确输出中文字符。
去掉所有中文
程序能正常正确执行
上述去掉中文的尝试说明不同的编码方式下,只有中文会受到影响,字母的编码不会受到影响,但是正常情况下程序里不可避免会出现中文,继续尝试在不同编码方式下输出中文。
- 运行那行代码
输出结果
此时我们发现,不仅注释中的中文能编译通过,输出语句中的中文也能正常输出,说明这条语句能解决中文编码问题。
2.情形2:java程序使用GBK编码方式,控制台使用GBK编码方式,同种编码方式,不会出现问题,所需要做的只是去百度转码方式。
3.情形3:java程序使用UTF-8编码方式,控制台使用UTF-8编码方式,我们再来看看针对都是UTF-8编码方式,会不会出现问题呢,答案是有点问题。
控制台输入chcp 65001,查看属性
此时发现还是不能运行,这个问题暂时不知道为什么,只能等以后去探索了。
此时尝试输入那行代码
发现此时中文自动不显示。
4.情形4:java程序UTF-8,控制台GBK,输入那行代码还是有效的。
尝试输入代码javac -encoding utf-8 Hello.java,发现程序能正常执行。
综上:乱码问题是真的迷,有效的方式当然是统一编码方式,比如上述统一GBK编码方式就能正常输出,但是统一UTF-8模式就不行,再比如不同的编码方式下,输入一行代码就能解决问题而不需要统一编码,就是原理百度不出来。但,只要问题解决了就行,基本操作就是不断百度尝试,这还是真的非常需要耐心呢。