Java处理文件上传时文件的中文名出现乱码问题

项目中遇到经过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 的区别了。java


来源:http://blog.csdn.net/youling_lh/article/details/9475519web