在javac命令中,encoding表示在进行编译时会使用什么样的编码去读源文件。那么针对以下的代码:
//源文件使用ide默认编码 UTF8编码 String s = "中文测试代码"; OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("d:/t.txt")); writer.write(s); writer.close();
对以上的utf8源代码,我们在cmd下分别使用以下3种命令进行编译并执行(中文版windows7操作系统)。
- 编译1 javac T.java
- 编译2 javac -encoding GBK T.java
- 编译3 javac -encoding UTF8 T.java
执行命令均为 java T
在最终的输出文件中,我们使用系统自带记事本打开相应的输出文件t.txt,会发现。3种编译的class文件在同一种执行命令下均能够正常显示相应的文字,并且没有乱码发生。
这里面就涉及到了默认编码,编码以及互相转换的问题,这里不涉及编码之间复杂的关系,只是从生成的class文件以及文件的执行上分析这里的运行结果。