javac -encoding 对class的编码有没有影响?? 我知道-encoding会决定编译器以什么样的方式来解释源代码。但是这会不会影响到class中存储的字符串的编码方式呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不会,class文件都是UTF-8的。Java的编译器实际上是调用sun.tools.javac.Main的类,对文件进行编译,这个类有compile函数中间有一个encoding的变量,-encoding的参数其实直接传给encoding变量。编译器就是根据这个变量来读取java文件的,然后用UTF-8形式编译成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文件的编码。 不过,只是感觉,现在我做的项目中,在使用encoding之前是乱码"日潤オ",使用之后变成了 "?",气死我了 Specify character encoding used by source files不会影响编码方式(java内部默认unicode编码方式 如7楼),但会影响解码效果吧 java图形界面问题 请问,最后一句return是干什么的 jdk底层输出流的疑惑 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20项之和 学习java要看什么书? jtextpane中如何让光标不能超过一个位置(急) 大伙帮帮我吧!Java中哪个方法可以作曲线图啊? 问一个菜菜问题:ant的实现机制,已经相关资料:) java支持byte[] a = String.getBytes("iso-8859-1");转换吗? 石头菜鸟来了 哪里有java的面试笔试题目啊? java初学者
LS的也说了,编译器就是根据这个变量来读取java文件的,如果java文件是iosxxx的编码,encoding用什么gbk之类的,虽然编译没问题,那么运行时候估计会出乱码。
其实FileInputStream也有charset参数的,也就是可以根据不同编码打开文件,如果用不同于文件的编码打开文件,就会出现乱码,我是依据这个而推测上面的encoding的。个人看法,仅供参考
-encoding决定了编译器以什么编码方式存储文件。你要区分,一个文件的编码方式和字符的编码方式这两个概念。
应该是指文件的编码方式
不会影响字符串的编码
也可以通过-encoding强制指定,该参数是用来告诉编译器源文件中的字符串的编码方法是什么,并不影响最终.class文件的编码。
不会影响编码方式(java内部默认unicode编码方式 如7楼),但会影响解码效果吧