Eclipse System.out.write()无法正确写入某些字节

Eclipse System.out.write()无法正确写入某些字节,eclipse,Eclipse,我和一个朋友正在做一项作业,其中包括将字节写入文件。通常我们会使用类似于FileOutputStream的东西,但是这个赋值明确要求我们将数据(在本例中,以字节为单位)写入标准输出。不幸的是,它没有按预期工作 例如,编写此代码: System.out.write(144); // write the byte 0x90, which is 144 as an int System.out.flush(); …实际上将63对应的字节作为整数写入标准,而不是144 在使用FileOutputStr

我和一个朋友正在做一项作业,其中包括将字节写入文件。通常我们会使用类似于
FileOutputStream
的东西,但是这个赋值明确要求我们将数据(在本例中,以字节为单位)写入标准输出。不幸的是,它没有按预期工作

例如,编写此代码:

System.out.write(144); // write the byte 0x90, which is 144 as an int
System.out.flush();
…实际上将63对应的字节作为整数写入标准,而不是144

在使用FileOutputStream时,我们似乎没有遇到这个问题,但正如我前面所说的,任务要求我们将数据写入标准输出。有什么想法吗


提前感谢。

当我在Eclipse控制台中看到字符0x3F(63)而不是0x90时,我也很惊讶。正如Miguel Prz所建议的,问题与控制台编码有关。 默认情况下,它设置在cp1252上,似乎将0x90转换为0x3F。您最好设置ISO-8859-1并重定向到一个文件(参见屏幕截图)。
控制台也尝试显示字符,但当我将粘贴复制到十六进制编辑器时,没有得到正确的结果。

但是,在这种情况下,我建议您从Windows或Linux控制台启动程序,并将输出重定向到文件。因此,避免任何编码转换,直接将二进制数据写入文件。ISO-8859-1适用于0x90,但可能会给其他字符带来问题。此外,在标准输出(Eclipse控制台或其他)中显示所有字节(0x00到0xFF)没有什么意义


可能与控制台编码有关。因此,将程序的执行重定向到一个文件,并用十六进制编辑器打开它,然后查看结果在控制台上
System.out.write(144)
的输出是什么?这可能有用吗?您是如何确定它实际上将63对应的字节作为整数写入标准的?请包括相关控制台日志或任何其他证据。