java - Process.getInputStream() 编码问题

标签 java encoding process

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

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

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

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

最佳答案

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

关于java - Process.getInputStream() 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26565657/

相关文章:

c# - 我们如何降低 myProcess.TotalProcessorTime 的分辨率?

asp.net - wkhtmltopdf 多页 PDF 生成过程挂起

java - Hibernate 数据映射到 MariaDB 总是返回 null

ios - 如何对要作为消息发送的图像进行编码?

java - 使用TableRowJsonCoder将PubSub消息转换为BEAM中的TableRow

encoding - Coldfusion 11 的 CFdirectory,文件名中的非 ascii 字符问题

json - 我该如何处理这种编码?

python - Twisted - 用一个 react 堆监听多个进程的多个端口

java - 如何在 log4j2 中生成标题行

java - 使用 Eclipse IDE 编辑 .settings/org.eclipse.wst.common.component