cmd编译 .java :编码GBK的不可映射字符以及输出乱码 原因以及解决方法

出现这个问题分为两个部分: 一、 编译时编码错误    二、命令行编码无法显示中文而显示 “ ????”

原因:

一:编译时编码错误---编码GBK的不可映射字符

JDK默认国际版的,在编译未指定编码方式的时候,java.exe首先获得系统默认采用的编码格式,即操作系统的file.encoding参数(我国默认GBK),然后JDK就把JAVA源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放到内存中。之后,javac把转换后的UNICODE格式的文件进行编译成class类文件,此时.class文件是UNICODE编码的,它暂放在内存中,紧接着,JDK将此以UNICODE编码编译后的.class文件保存到操作系统中形成我们见到的.class文件。但我们不加设置就编译时,相当于使用了参数:javac -encoding gbk xx.java,就会出现不兼容的情况。

cmd编译 .java :编码GBK的不可映射字符以及输出乱码 原因以及解决方法_第1张图片

我们使用了utf-8编辑.java, 但系统默认GBK,所以不兼容,报错

二 : 关于输出中文出现乱码 :这是命令行以GBK为默认,而.java中的字符以utf-8编码

解决方法

一: 编码GBK的不可映射字符

 方法一:每次运行时改 javac xxx.java 为 javac -encoding UTF-8 xxx.java

方法二:更改环境变量 系统变量中新建“JAVA_TOOL_OPTIONS”变量,值为“-Dfile.encoding=UTF-8”,永久改变编码格式

 : 命令行显示乱码:

 修改cmd窗口字符编码为UTF-8,命令行中执行:chcp 65001

 切换回中文GBK:chcp 936

 剩余细节如改变字体请自行百度“命令行不能新显示中文”即可


你可能感兴趣的:(Windows)