Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
2017-02-07 08:41
302 查看
今天项目中遇到通过web上传文件到文件系统时,中文文件名乱码,一步步排查了http通讯过程中的编解码(通过utf-8)都没有发现问题。操作系统的默认字符集也是utf-8。 通过日志打印System.getProperty("file.encoding")也是utf-8码。。。。一时凌乱了!! 最后通过查资料,发现通过java写文件时文件名编码和System.getProperty("sun.jnu.encoding")有关,打印此环境属性发现输出竟然是ANSI的一种编码,终于找到问题爆发点,通过在程序中设置System.setProperty("sun.jnu.encoding","utf-8")解决问题。
通过问题解决得出结论:sun.jnu.encoding 影响文件名的创建,而 file.encoding 则影响到文件内容。
所以说,在我们使用 Java 处理中文文件的时候,如果发现文件的中文内容没有乱码,而文件的中文名发生乱码,我们就应当多考虑一下 sun.jnu.encoding 和 file.encoding 的区别了。
通过问题解决得出结论:sun.jnu.encoding 影响文件名的创建,而 file.encoding 则影响到文件内容。
所以说,在我们使用 Java 处理中文文件的时候,如果发现文件的中文内容没有乱码,而文件的中文名发生乱码,我们就应当多考虑一下 sun.jnu.encoding 和 file.encoding 的区别了。
相关文章推荐
- 关于 Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
- Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
- 关于 Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
- Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
- 关于 Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
- Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
- 关于 Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
- 关于 Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
- 关于 Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别
- JAVA之项目的sun.jnu.encoding 和 file.encoding 的区别
- java中的file.encoding属性到底由什么决定?
- java File_encoding属性
- 在Java中获取系统属性
- java中获取系统属性的方法
- java.io.File 中 getPath(), getAbsolutePath() 和 getCanonicalPath() 三个方法的区别
- java.io.File 中 getPath(), getAbsolutePath() 和 getCanonicalPath() 三个方法的区别
- java中方法和属性的区别
- 如何获取文件属性---java.io.File类
- Sun提交Java模块系统规范 力求解决Java应用部署难题
- java系统属性取得