Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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_Internationalization_Arguments - Fatal编程技术网

Java 汉字被换成问号

Java 汉字被换成问号,java,file,internationalization,arguments,Java,File,Internationalization,Arguments,请看我的上一个问题:这个问题与那个问题类似,但有一点变化,会导致该问题中的解决方案不再有效 我现在尝试将文件名作为程序参数,如果字符是中文(或日文或类似文字),它们将被替换为?,我将得到一个异常 运行配置>通用>编码=UTF-8 程序参数:你好.txt 主要内容: 异常:线程“main”java.io.FileNotFoundException中的异常:C:\temp\??.txt.txt(文件名、目录名或卷标语法不正确) 我如何才能做到这一点?问题可能出在您输入字符的控制台上,而不是程序本身。

请看我的上一个问题:这个问题与那个问题类似,但有一点变化,会导致该问题中的解决方案不再有效

我现在尝试将文件名作为程序参数,如果字符是中文(或日文或类似文字),它们将被替换为
,我将得到一个异常

运行配置>通用>编码=
UTF-8

程序参数:
你好.txt

主要内容:

异常:
线程“main”java.io.FileNotFoundException中的异常:C:\temp\??.txt.txt(文件名、目录名或卷标语法不正确)


我如何才能做到这一点?

问题可能出在您输入字符的控制台上,而不是程序本身。例如,Windows的命令提示符不使用Unicode(因此任何无效的ASCII输入在输入程序之前都会转换为问号)。检查这一点的一个简单方法是编写一个程序,该程序仅将参数[0]管道传输到UTF-8编码的文件,并检查结果。@makata同样的事情,但异常没有额外的
.txt
@CPUTerminator我正在使用eclipse“程序参数”对于测试/调试,但实际上我会使用套接字以文件名arguments启动应用程序。您仍然可以执行相同的测试(通过编写一个程序,将参数导出到UTF-8文件),以检查Eclipse是否在将参数传递到程序之前损坏了您的参数。最坏的情况是,您将一些预期值硬编码到代码本身中,当该部分完成时,用实际实现替换它们。Java非常适合处理Unicode字符串,因此您遇到的问题是严格由实现定义的(例如操作系统处理非Unicode字符)@Aequitas,检查
字符串文件名=”你好.txt”工作!
public static void main(String[] args) throws IOException
{
    String fileName = args[0];

    Writer out = new BufferedWriter(new OutputStreamWriter(
            new FileOutputStream("C:/temp/"+fileName+".txt"), "UTF-8"));//Ex thrown
    out.close();
}