Process.getInputStream()编码问题

时间:2014-10-25 18:17:33

标签: java encoding process

我有以下几行代码。我想使用正确的编码方案。

Process process = processBuilder.start();
InputStreamReader isr = new InputStreamReader(process.getInputStream());

我的eclipse默认使用Windows-1252编码。当我在命令提示符下运行chcp命令时结果为codepage 437

这意味着我从命令行获得的字节流是使用( codepage437 )不同的方案编码的,而不是JVM使用的方案( windows1252 )。当我希望我的应用程序在不同平台上运行时,我在两者之间进行同步。[我无法硬编码在我的java应用程序中使用代码437]

1 个答案:

答案 0 :(得分:0)

Eclipse与它无关。在运行时,您的常量是UTF-16字符串,与您在Eclipse中设置的Java源代码无关。从流中读取的程序只需要知道您启动过程中使用的编码。正如您所说,这将取决于您运行的计算机类型,设置是什么以及您启动的程序的创建者所做出的选择。我希望Windows上的本机非_UNICODE程序写入的字节的字面值出现在流上。如果您正在运行的程序是作为_UNICODE应用程序构建的,那么它将会出现在流上的一个有趣的问题...... UTF-16?在任何情况下,任何创建任何命令行程序的程序员都可以在标准输出流中发送他们喜欢的任何内容:即使系统上的每个其他程序都在咳嗽,比如Windows-1252,一个特定程序可能会编写UTF-8和记录下来,以便>重定向到文件中。你必须知道。