Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置文件名编码_Java_Encoding - Fatal编程技术网

Java 设置文件名编码

Java 设置文件名编码,java,encoding,Java,Encoding,我有一个定义编码(utf8)的输入文件,我从中创建不同的文件,这些文件的名称和内容(同样是utf8)来自该输入文件 我的问题是,在一个特定的windows系统中,创建的文件没有正确的字符。这些文件的内容是完全可读的,但它们的名称不是。 文件名为├xml 在其他Windows系统上,一切正常 文件内容的编码可以在OutputStreamWriter的第二个参数中设置,但文件名的编码不能在new file(name)中设置 谢谢。Java使用“平台的默认字符集”将文件名转换为字符串,无法通过标准AP

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

我的问题是,在一个特定的windows系统中,创建的文件没有正确的字符。这些文件的内容是完全可读的,但它们的名称不是。 文件名为
├xml

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

文件内容的编码可以在
OutputStreamWriter
的第二个参数中设置,但文件名的编码不能在
new file(name)
中设置

谢谢。

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

java -Dfile.encoding=cp1252 package.ClassName
在其他系统上,影响文件名编码的唯一方法是通过系统区域设置。您可以在这里了解更多信息:

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

java -Dfile.encoding=cp1252 package.ClassName

在其他系统上,影响文件名编码的唯一方法是通过系统区域设置。您可以在这里阅读更多相关内容:

看到两个字符,其中应该有一个UTF-8多字节字符
u
。Windows似乎没有UTF-8作为文件编码。一个UTF-8文件被复制到该系统上,就像解压一个zip文件一样


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

看到两个字符,其中应该有一个UTF-8多字节字符
。Windows似乎没有UTF-8作为文件编码。一个UTF-8文件被复制到该系统上,就像解压一个zip文件一样


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

如果手动将
Ü.xml
复制到该Windows系统,会发生什么情况?两个系统上JVM的默认编码是什么?手动复制可以工作
System.getProperty(“file.encoding”)
在这两个页面上都是“Cp1252”。感谢您的反馈。事实证明,这个问题是maven的问题,因为文件是由java执行正确生成的,但只有当maven将它们打包到jar中时,问题才存在。请参阅:如果手动将
Ü.xml
复制到该windows系统,会发生什么情况?两个系统上JVM的默认编码是什么?手动复制可以工作
System.getProperty(“file.encoding”)
在这两个页面上都是“Cp1252”。感谢您的反馈。事实证明,这个问题是maven的问题,因为文件是由java执行正确生成的,但只有当maven将它们打包到jar中时,问题才存在。见:谢谢你的回复。两个系统上的file.encoding都是“Cp1252”。文件是如何创建的?手动操作应该没有故障。在Java中,正如
“ü.xml”
一样,可能有两个错误:源代码可以在IDE中设置,编译器也可以使用编码参数化:
javac-encoding Cp1252…
。感谢您的回复。两个系统上的file.encoding都是“Cp1252”。文件是如何创建的?手动操作应该没有故障。在Java中,正如
“ü.xml”
一样,可能有两个错误:源代码可以在IDE中设置,编译器也可以使用编码参数化:
javac-encoding Cp1252…