设置文件名编码

时间:2012-02-08 16:04:04

标签: java encoding

我有一个定义编码的输入文件(utf8),我从中创建了不同的文件,其名称和内容(再次是utf8)来自该输入文件。

我的问题是,一个特定的Windows系统,创建的文件没有正确的字符。这些文件的内容是完全可读的,但他们的名字不是。 该文件名为Ü.xml

,而不是├£.xml

在其他Windows系统上,一切正常。

文件内容的编码可以在OutputStreamWriter的第二个参数中设置,但似乎无法在new File(name)中设置文件名的编码。

感谢。

2 个答案:

答案 0 :(得分:3)

看到两个字符应该有一个UTF-8多字节字符ü。 Windows似乎没有UTF-8作为文件编码。并且将UTF-8文件复制到该系统上,例如解压缩zip文件。

System.getProperty("file.encoding")应该提供平台编码。也许,可以远程想象,这是Java resp没有涵盖的一些奇怪的情况。 Windows,如压缩目录,或使用不支持UTF-8的文件系统格式化的第二个外部磁盘。

答案 1 :(得分:1)

Java使用“平台的默认字符集”将文件名转换为字符串,并且无法通过标准API更改该行为。 可能,在某些系统上,能够在启动JVM时更改默认编码:

java -Dfile.encoding=cp1252 package.ClassName

在其他系统上,影响文件名编码的唯一方法是通过系统区域设置。您可以在此处详细了解:http://jonisalonen.com/2012/java-and-file-names-with-invalid-characters/