当前位置: 首页 >Java技术 > Java编译与反编译中的汉字乱码(IDEA反编译不要使用IntelliJ)

Java编译与反编译中的汉字乱码(IDEA反编译不要使用IntelliJ)

一、什么是编译与反编译

简单来讲,编译就是把.java文件生成为.class文件,反编译就是把.class生成为.java文件。如果看到这里你已经懂了就可以看第二大部分了,不然就再听我絮叨一下。

我们编程的时候主要是写一个个.java文件,以及围绕它的相关配置。但是.java文件不可以直接被执行,它的需要被编译成.class文件,才能够运行在不同的JVM上。.class文件即为JVM可运行的二进制文件。

Java编译与反编译中的汉字乱码(IDEA反编译不要使用IntelliJ) _ JavaClub全栈架构师技术笔记

二、反编译工具

反编译的工具主要用来打开.class文件,展示.java文件的内容,而不是像上文文字字面描述的那样,真正地生成一个.java文件。生成的.java文件与原.java文件可能内容有点出入,但是不妨碍主要内容的理解。

一般是三个工具应用比较广泛:Java Decompiler、IntelliJ IDEA、IntelliJ Eclipse。

Java Decompiler百度经验上就有使用方法,这里不赘述。传送门

IntelliJ IDEA,主要说一下这个,其实主要是说为什么不用它。如果你像我一样使用IDEA,其实就可以直接打开.class文件,如下图。

Java编译与反编译中的汉字乱码(IDEA反编译不要使用IntelliJ) _ JavaClub全栈架构师技术笔记

但是,如果你下载了IntelliJ IDEA插件,并使用它,那么你就会发现,用了还不如不用…之前可以看到的代码都看不了了。所以这里也不交给大家怎么下这个插件了,留给自己点快乐,好么?

Java编译与反编译中的汉字乱码(IDEA反编译不要使用IntelliJ) _ JavaClub全栈架构师技术笔记

Java编译与反编译中的汉字乱码(IDEA反编译不要使用IntelliJ) _ JavaClub全栈架构师技术笔记

三、汉字在编译时的注意事项

  • 编译含有中文的java文件使用utf-8的方式进行编码
  • windows上编写代码时不要用记事本的方式打开

编译这一步虽然简单,看起来就是在IDE上点击个按钮的事情,但是还是有坑的。当然上述的注意事项前提,是你的代码编写正确。

1、为什么 & 如何指定编译时的编码方式?

为什么?windows使用的编码方式是GB 2312,而JVM的编码方式为Unicode。如果不太清除编码方式是什么,可以把它当作一种由java语言翻译成机器语言的规则,规则不同,交流的时候就出现的问题,尤其是在文件中出现中文的时候。有人问,UTF-8和Unicode听起来还是不同的,但是UTF-8是Unicode的一种实现方式,UTF-8可以在编译过程中编译汉字,并且编译结果被JVM所识别,但是Unicode不可以。

如果你使用命令行,使用命令

javac -encoding 编码方式 类名.java

示例,注意,需要在命令行中进入类文件所在的路径下,才可以执行这个命令。

Java编译与反编译中的汉字乱码(IDEA反编译不要使用IntelliJ) _ JavaClub全栈架构师技术笔记

如果使用IDEA,它编译是默认的编码方式就是utf-8,如何查看IDEA编码格式,传送门

2、为什么不用记事本打开?

Windows的纯文本编译器会在文档头加上BOM,javac看到BOM会无法编译。并且,使用现成的IDE不快乐么?实在不行,notepad++考虑一下啊。

 

 

 

 

作者:zhanggonglalala
来源链接:https://blog.csdn.net/zhanggonglalala/article/details/103032618

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/java/64486.html

分享给朋友:

“Java编译与反编译中的汉字乱码(IDEA反编译不要使用IntelliJ)” 的相关文章

全面了解 Java 原子变量类 2022年05月17日 20:52:45
java高级 2022年05月30日 21:31:04
JAVA的文件操作【转】 2022年05月30日 21:51:26
Java Ant build.xml详解 2022年06月01日 20:08:34
深入理解Java:String 2022年06月01日 21:51:52
Java Calendar类的使用总结 2022年06月01日 22:42:49
java中this关键字的作用 2022年06月01日 22:55:24
Java Web系列:Java Web 项目基础 2022年06月01日 23:39:54