错误: 编码 GBK 的不可映射字符 (0x80)

在我想要在命令行使用println输出一些中文的时候,发现编码出现错误

在这里插入图片描述


原因: java程序在编译的时候,需要使用JDK开发工具包中的JAVAC.EXE命令,而JDK开发工具包是国际版的,默认格式为UNICODE的编码格式。因此在默认情况下,javac.exe会采用默认的编码格式,什么是默认的编码格式呢?也就是我们在编译JAVA程序时,在未指定源程序文件的编码格式的情况下,JDK会优先获取操作系统的file.encoding参数,然后JDK就把我们的JAVA源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放到内存中。然后,javac把转换后的UNICODE格式的文件进行编译成class类文件,此时.class文件是UNICODE编码的,它暂放在内存中,之后,JDK将此以UNICODE编码编译后的.class文件保存到操作系统中形成我们见到的.class文件;

为什么JDK开发工具包默认格式为UNICODE的编码格式呢?主要原因是因为UNICODE的编码格式是最统一的编码,可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。 相对于我们国内来说,现在较多使用的编码格式多位UTF-8以及GB2312等编码格式。这里编译java源程序时出现的错误: 编码 GBK 的不可映射字符 (0x80)的主要原因是,在编写java源程序代码时代码中添加了中文注释,且java文件的编码格式不是ANSI编码格式,导致在编译java源程序时报错,无法成功编译;

java编译的时候会转换成统一的unicode编码处理,最后保存的时候再转换为utf编码。所以解决的方法就是更改java源程序的编码格式。

解决办法

1.在编写java源程序代码(我用的是Notepad++)保存时,选择合适的编码语言进行保存。以notepad++编辑软件为例,在保存时把java文件转换成ANSI编码格式即可。操作方法为:选择菜单栏中的编码,选择“ANSI格式编码“,选择后保存即可在这里插入图片描述

2.使用使用命令javac -encoding UTF-8编译,以HelloWorld.java的源程序为例,编译时执行的命令为:javac -encoding UTF-8 HelloWorld.java。执行后,java源程序就被成功编译为.class文件,并且能够通过java.exe命令执行!在这里插入图片描述

问题得到了解决

  • 26
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

star__king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值