关于 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
  • 11999

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

原文地址:http://blog.csdn.net/youling_lh/article/details/9475519 今天项目中遇到通过web上传文件到文件系统时,中文文件名乱码,一步步排查了h...
  • zhengqiqiqinqin
  • zhengqiqiqinqin
  • 2013年12月23日 10:56
  • 8087

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

java中的file.encoding属性和sun.jnu.encoding属性到底是什么?从哪里来?干什么用?让我们一步步走向真相。...
  • u010234516
  • u010234516
  • 2016年10月17日 21:39
  • 4416

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

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

sun.jnu.encoding

Java Platform Encoding This came up at $WORK recently. We had a java program that was given input...
  • dac55300424
  • dac55300424
  • 2015年07月20日 21:44
  • 1453

Jenkins控制台输出乱码的问题

这两天在用Jenkins构建maven编译任务时,发现有编码的报错: unmappable character for encoding ANSI_X3.4-1968 我使用的Jenkins On...
  • felix_yujing
  • felix_yujing
  • 2016年09月18日 23:48
  • 3723

Java -Dfile.encoding=UTF-8的使用

原文地址:http://blog.sina.com.cn/s/blog_4ce8808d0101d0i1.html Java -Dfile.encoding=UTF-8  遭遇乱码问题的...
  • haixia_12
  • haixia_12
  • 2015年01月05日 16:22
  • 2712

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

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

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

转载自:http://blog.csdn.net/defonds/article/details/7044750         sun.jnu.encoding 影响文件名的创建,而 file...
  • yang3wei
  • yang3wei
  • 2012年03月22日 00:34
  • 2379

linux下乱码问题

今天在新服务器的tomcat上跑项目的时候 tomcat控制台乱码! servlet接收参数乱码。经常要看日志所以在/home目录下写了个脚本[root@template ~]# cd /home/...
  • maobois
  • maobois
  • 2016年06月16日 22:35
  • 788
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于 Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
举报原因:
原因补充:

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