`
xumingrencai
  • 浏览: 1181575 次
文章分类
社区版块
存档分类
最新评论

关于 Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别

 
阅读更多

转载自:http://blog.csdn.net/defonds/article/details/7044750

sun.jnu.encoding 影响文件名的创建,而file.encoding 则影响到文件内容。

所以说,在我们使用 Java 处理中文文件的时候,如果发现文件的中文内容没有乱码,而文件的中文名发生乱码,我们就应当多考虑一下sun.jnu.encoding 和 file.encoding 的区别了。

支持中文文件目录的org.apache.tools.zip.* 打包解压缩中文文件夹都没有问题的。但有的时候打包后的中文文件名会出现乱码,这是为什么呢?查看org.apache.tools.zip.ZipOutputStream 的 API 会发现关于其getEncoding() 方法的说明:“The encoding to use for filenames and the file comment.”,将以下语句执行一下:

  1. org.apache.tools.zip.ZipOutputStreamout=neworg.apache.tools.zip.ZipOutputStream(newjava.io.FileOutputStream("D:/temp/testfile.zip"));
  2. System.out.println("out.getEncoding()="+out.getEncoding());

执行结果如下:

out.getEncoding()=null

问题就在这里了。在org.apache.tools.zip.ZipOutputStream 创建好以后,手工设置一下:

  1. out.setEncoding(System.getProperty("sun.jnu.encoding"));

发现打包后中文名可以正常显示了。

参考一:http://stackoverflow.com/questions/1066845/what-exactly-is-sun-jnu-encoding【stackoverflow 关于sun.jnu.encoding 的解答】,

参考二:http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/api/org/apache/tools/zip/ZipOutputStream.html【ZipOutputStream 的 API】,

参考三:http://massapi.com/source/apache-ant-1.8.2/src/main/org/apache/tools/zip/ZipOutputStream.java.html【ZipOutputStream 的源代码】。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics