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

原创 2011年12月06日 10:24:47

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

        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.”,将以下语句执行一下:

		org.apache.tools.zip.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream(new java.io.FileOutputStream("D:/temp/testfile.zip"));
		System.out.println("out.getEncoding()=" + out.getEncoding());

        执行结果如下:

out.getEncoding()=null

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

		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 的区别

原文地址:http://blog.csdn.net/youling_lh/article/details/9475519 今天项目中遇到通过web上传文件到文件系统时,中文文件名乱码,一步步排查了h...

sun.jnu.encoding

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

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

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

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

转载自:http://blog.csdn.net/defonds/article/details/7044750         sun.jnu.encoding 影响文件名的创建,而 file...

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

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

服务端 Tomcat catalina.out 文件输出中文乱码

参考 Linux Tomcat System.out.print 中文乱码 项目部署到Linux服务器之后,控制台 catalina.out 文件输出的中文为乱码: 解决办法:bin/catali...

Jenkins控制台输出乱码的问题

这两天在用Jenkins构建maven编译任务时,发现有编码的报错: unmappable character for encoding ANSI_X3.4-1968 我使用的Jenkins On...

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

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

关于file.encoding的设置

昨天有人在讨论关于设置System的property,file.encoding 修改defaultcharset无效 Properties pps=System.getProperties(); p...

tomcat环境中file.encoding的修改方法

花了3天时间终于解决了这个问题,还是很开心的;)问题:严重: Servlet.service() for servlet default threw exceptionjava.lang.NullPo...
  • elia1208
  • elia1208
  • 2011年04月17日 16:43
  • 18065
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于 Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
举报原因:
原因补充:

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