Java 多语言解码包含(??)个字符,可以';我不能解释正确的语言

Java 多语言解码包含(??)个字符,可以';我不能解释正确的语言,java,windows-10,Java,Windows 10,这是我的设想, 我正在尝试在windows中通过管道传输两个java文件。示例:cmd/C java-C classpath A.java | java-C classpath B.java 这里,A.java的sout作为B.java(System.in)的输入。我的实际问题是A.java的源包含多种语言的混合,而我的B.java将其作为文件编写。这些不同的语言字符被写为“?”。在这里,我如何获得这些值? 注意:对于转换,我使用IOUtils.copy(inputstream,outputst

这是我的设想, 我正在尝试在windows中通过管道传输两个java文件。示例:cmd/C java-C classpath A.java | java-C classpath B.java

这里,A.java的sout作为B.java(System.in)的输入。我的实际问题是A.java的源包含多种语言的混合,而我的B.java将其作为文件编写。这些不同的语言字符被写为“?”。在这里,我如何获得这些值? 注意:对于转换,我使用IOUtils.copy(inputstream,outputstream)。这种类型的错误只在windows中发生,我使用的是windows 10

processjavatapprocess=processBuilder.start();ZDBTapUtil.writeInputStreamInASingleFile(javaTapProcess.getInputStream(),catalogFile)


请添加您的代码。您的字符集似乎有问题。没有看到任何代码,我猜您在第二个文件的某个地方使用默认的系统字符集将字节转换为字符。另一种选择是,该文件很好,但您使用的查看器不支持字符集。我添加了部分代码。如何在sout中编写时设置字符集,以及如何查找要转换的inpustream的字符集?为什么要创建一个阅读器?将
输入流
(字节序列)复制到文件(字节序列)不需要字符集解码。整个方法可以由单个语句替换。
`public static String writeInputStreamInASingleFile(InputStream inputStream, String filePath) throws IOException {
    File file=new File(filePath);
    OutputStream outputStream=null;
    try {
        String line = null;
        if(!file.getParentFile().exists()){
            file.getParentFile().mkdirs();
        }
        file.createNewFile();
        outputStream=new FileOutputStream(file);
        BufferedReader in = new BufferedReader(
                new InputStreamReader(inputStream));
        IOUtils.copy(in,outputStream);
    } catch (IOException e) {
        throw e;
    }finally {
       try {
            inputStream.close();
            if(outputStream!=null){
                outputStream.close();
            }
        } catch (IOException e) {
            throw e;
        }
    }
    return file.getAbsolutePath();
}`