java程序代码的编码会影响编译吗?

时间:2016-05-29 08:41:23

标签: java encoding

Oracle文档声明:

  

-encoding encoding

     

设置源文件编码名称,例如EUC-JP和UTF-8。如果未指定-encoding,则使用平台默认转换器。

我知道Mac OS X上的平台默认转换器是Mac Roman。但是当我用UTF-8编码的.java文件和许多其他编码时,代码编译成功。我还试图强制javac从Mac罗马编码的程序代码中读取UTF-8和EUC-JP编码,并且它也成功编译。

为什么会这样?我希望以上所有内容都失败。

1 个答案:

答案 0 :(得分:1)

编译并运行此代码:

System.out.println("".length());

当文件保存为UTF-8并按此解释时,它将打印2,因为笑脸需要存储两个char

当文件被解释为MacRoman时,它将打印4,因为UTF-8编码长度为4个字节。

(注意:您可以在单元测试中使用此代码以确保正确的编码。)

当你尝试这个时:

System.out.println('');

编译为MacRoman甚至无法正常工作。

因此,只要所有UTF-8内容都在字符串文字和注释中,一切似乎都有效。