Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_File_Io_Internationalization_Chinese Locale - Fatal编程技术网

Java 正在创建文件名中包含非英语字符的文件

Java 正在创建文件名中包含非英语字符的文件,java,file,io,internationalization,chinese-locale,Java,File,Io,Internationalization,Chinese Locale,如何在Java中创建文件名中包含汉字的文件?我已经阅读了许多堆栈溢出的答案,但找不到合适的解决方案。到目前为止,我编写的代码如下: private void writeFile(String fileContent) { try{ File file=new File("C:/temp/你好.docx"); if(file.exists()){ file.delete(); } file.createNewFile(

如何在Java中创建文件名中包含汉字的文件?我已经阅读了许多堆栈溢出的答案,但找不到合适的解决方案。到目前为止,我编写的代码如下:

private void writeFile(String fileContent) {
try{
    File file=new File("C:/temp/你好.docx");
        if(file.exists()){
            file.delete();
        }
        file.createNewFile();
        FileOutputStream fos = new FileOutputStream(file);
        fos.write(fileContent);
        fos.close();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

文件被写入输出目录,但文件名包含一些垃圾值。提前谢谢。

我相信关键是我在评论中提到的

您可以在源代码中将汉字或其他非ascii字符作为文本。但是,您应该确保两件事:

您用来保存源文件的编码能够表示这些字符,我的建议是使用UTF-8 传递给javac的-encoding参数应该与文件的编码匹配。 例如,如果您使用UTF-8,您的javac命令应该如下所示

javac-编码utf-8foo.java


我刚刚尝试了一段类似的代码,它在我的机器上运行良好

中文字符是Unicode格式的,所以不清楚为什么这不起作用。你能发布一个你尝试过的代码示例吗,也许有一个异常日志?哪个平台Win/Mac/Unix和文件系统NTFS/ext3/JFS给您带来了麻烦?没有例外。该文件已创建,但具有随机文件名。我使用的是Windows7NTFS和JDK6。我投了反对票,输入了一条要求代码的评论,你在我输入时添加了它。您需要使用Unicode转义序列:\unnn作为该名称。我不熟悉这些角色,但我怀疑您正在迁移到UTF-32领域。谢谢您的回复John。我实际上会得到任何语言的文件名,而不仅仅是中文。我必须确保写入文件的名称与给定文件的名称相同,该文件稍后将作为函数参数读取。utf-8编码是否足以支持通用语言?我还需要通过在文件名前面添加\unnn来转义文件名的每个字符吗?有一些工具可以帮助您将文本文件转换为这些utf转义序列。e、 JDK包含native2ascii。如果您将这些字符串文本放在一个单独的资源文本文件中,并使用native2ascii对其进行处理,那么它应该工作得很好。无论如何,在源代码中嵌入应该仍然有效,但是要确保编译和保存文件时使用的字符编码是相同的。建议在这两种情况下都使用UTF-8