首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

javac -encoding 对class的编码有没有影响?解决办法

2012-02-17 
javac -encoding 对class的编码有没有影响??我知道-encoding会决定编译器以什么样的方式来解释源代码。但是

javac -encoding 对class的编码有没有影响??
我知道-encoding会决定编译器以什么样的方式来解释源代码。
但是这会不会影响到class中存储的字符串的编码方式呢?

[解决办法]
不会,class文件都是UTF-8的。Java的编译器实际上是调用sun.tools.javac.Main的类,对文件进行编译,这个类有compile函数中间有一个encoding的变量,-encoding的参数其实直接传给encoding变量。编译器就是根据这个变量来读取java文件的,然后用UTF-8形式编译成class文件。
[解决办法]
不会影响
[解决办法]
应该有影响吧,否则这个参数就没意义了。
LS的也说了,编译器就是根据这个变量来读取java文件的,如果java文件是iosxxx的编码,encoding用什么gbk之类的,虽然编译没问题,那么运行时候估计会出乱码。
其实FileInputStream也有charset参数的,也就是可以根据不同编码打开文件,如果用不同于文件的编码打开文件,就会出现乱码,我是依据这个而推测上面的encoding的。

个人看法,仅供参考

[解决办法]
会有影响。UTF-8是指java程序内部的String存储编码。但是class不一定。
-encoding决定了编译器以什么编码方式存储文件。

你要区分,一个文件的编码方式和字符的编码方式这两个概念。


[解决办法]
-encoding
应该是指文件的编码方式
不会影响字符串的编码
[解决办法]
Java语言内部采用的是Unicode编码的,其编译产生的.class文件也是unicode编码。

运行javac.exe时,它首先获得我们操作系统默认采用的编码格式,也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数,然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class文件是UNICODE编码的,它暂放在内存中,紧接着,JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到的.class文件。对我们来说,我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件。


也可以通过-encoding强制指定,该参数是用来告诉编译器源文件中的字符串的编码方法是什么,并不影响最终.class文件的编码。
[解决办法]
同意 5楼的
[解决办法]
同意7楼!
[解决办法]
Specify character encoding used by source files
不会影响编码方式(java内部默认unicode编码方式 如7楼),但会影响解码效果吧
[解决办法]
支持7楼的观点

探讨
Java语言内部采用的是Unicode编码的,其编译产生的.class文件也是unicode编码。

运行javac.exe时,它首先获得我们操作系统默认采用的编码格式,也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数,然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.clas…

热点排行