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

转载 2012年03月22日 00:34:52

转载自: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.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream(new java.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 的源代码】。

相关文章推荐

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

关于 Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别         sun.jnu.encoding 影响文件名的创建,而 file.encodin...
  • defonds
  • defonds
  • 2011年12月06日 10:24
  • 11056

JAVA总结(三):sun.jnu.encoding与file.encoding的区别

先说结论,sun.jnu.encoding是指操作系统的默认编码,file.encoding是指JAVA文件的编码(请记住,不是class文件,所有class文件的编码都是UTF-8),所以,在同一个...
  • yiifaa
  • yiifaa
  • 2017年08月10日 19:39
  • 186

jenkins 编码问题--记录从一个坑掉入另一个坑。

首先我要吐槽下windows的控制台默认编码GBK情景:使用jenkins构建,console 输出的中文乱码。这里因为脚本中调用了系统的taskkill指令,在进程存在时会杀掉。如果进程不存在则提示...

java中的file.encoding属性到底是什么?

java中的file.encoding属性和sun.jnu.encoding属性到底是什么?从哪里来?干什么用?让我们一步步走向真相。...

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

今天项目中遇到通过web上传文件到文件系统时,文件名乱码,一步步排查了http通讯过程中的编解码(通过utf-8)都没有发现问题。操作系统的默认字符集也是utf-8。 通过日志打印System.get...

sun.jnu.encoding

Java Platform Encoding This came up at $WORK recently. We had a java program that was given input...

java File_encoding属性

java file.encoding

Java利用System.getProperty("file.encoding")获取编码分析

1.0 背景 System.out.println(System.getProperty("file.encoding"));11 以前一直以为file.encoding的编码就是系统的编码,...

tomcat的编码集file.encoding和URIEncoding的设置

最近遇到一个问题:项目在本地windows系统下部署没有问题,但部署到linux系统下的时候就不能够解析了。 后来查了一下资料是编码集问题。 解决tomcat编码集问题有2处。 第一处:也是...

python出现SyntaxError: Non-ASCII character '\xe6' in file 打印日期.py on line 1, but no encoding declared

刚开始学习python,照着书上敲的代码: #根据给定的年月日以数字的形式打印出来 months = [ 'January', 'Febuary', 'March',...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于 Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
举报原因:
原因补充:

(最多只允许输入30个字)