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,就会出现不兼容的情况。


我们使用了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

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


  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值