趣文网 > 作文大全

java编译干货|解析java程序编译时编码GBK的不可映射字符的错误

2020-12-02 04:30:02
相关推荐

对于java初学者来说,怕的不是没有热情,而是学习中遇到问题无法解决的焦躁。最近,小编在学习java时就遇到了这么一个问题,在编译java源程序的时候出现报错:HelloWorld.java:8: 错误: 编码 GBK 的不可映射字符 (0x80)。这样的错误,对于初学的小编来说久久不能解决,在多次百度学习之后,终于领会了其中的奥秘。

java初学者

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文件。

class文件

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

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

第一种方法就是使用命令javac -encoding UTF-8编译,以HelloWorld.java的源程序为例,编译时执行的命令为:javac -encoding UTF-8 HelloWorld.java。执行后,java源程序就被成功编译为.class文件,并且能够通过java.exe命令执行。

javac -encoding UTF-8 HelloWorld.jav

第二种方法就是在编写java源程序代码保存时,选择合适的编码语言进行保存。以notepad编辑软件为例,在保存时把java文件转换成ANSI编码格式即可。操作方法为:选择菜单栏中的编码,选择“ANSI格式编码“,选择后保存即可。

ANSI编码格式

详细通过这篇文章,大家对java源程序编译时出现的报错:HelloWorld.java:8: 错误: 编码 GBK 的不可映射字符 (0x80)的原因就清楚了,当然也就很容易就解决这个问题了。对于在java学习中,大家还有什么经验或者问题,都可以分享学习,千万别吝啬哦

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

我的精彩作文 元旦英语作文 作文冬天的景色 作文素材积累高中 熊出没作文 游记800字作文 沉淀作文 我和妈妈 作文 三年级语文下册作文 初一400字作文 捉鱼作文 全国一作文 温暖的家作文 励志作文800字 记忆深处的作文 秦始皇作文 做手工的作文 高中作文700字 游记作文怎么写 最敬佩的人作文 母爱作文结尾 作文开心的一天 100字作文素材 谦让 作文 作文美丽的春天 创新的作文素材 作文250字左右 并列式作文 怀念作文 雨水作文