gpt4 book ai didi

java - 将 Windows 命令行输出从 Cp1252 转换为类似的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 07:13:47 24 4
gpt4 key购买 nike

我正在执行 Windows 命令,需要解析结果输出,并将部分文本与先前存储在 Java 代码中的字符串进行比较。

但显然字符集不匹配会阻止 equals 返回 true。

这是我的代码:

    ProcessBuilder pb = new ProcessBuilder();
pb.command("systeminfo");
Process shell = pb.start();
InputStream shellIn = shell.getInputStream();


InputStreamReader reader = new InputStreamReader(shellIn, "Cp1252");
BufferedReader br = new BufferedReader(reader);

String sCurrentLine;
while((sCurrentLine = br.readLine()) != null) {

// ... omitting parse of sCurrentLine for brevity
System.out.println("DOS String:" + sCurrentLine);
System.out.println("JAVA String: "+ Versão");
System.out.println("Versão".equals(sCurrentLine));
}

我的输出将是:(命令行窗口):

    Windows String: Versão
JAVA String: VersÒo
false

到文本文件:

    Windows String: VersÒo
JAVA String: Versão
false

我在 stackoverflow 中发现了几个类似的问题,但没有一个答案对我有用。

converting String from Windows charset to UTF 8 in Java

Converting from Windows 1252 to UTF8 in Java: null characters with CharsetDecoder/Encoder

How to parse a string that is in a different encoding from java

Setting the default Java character encoding?

How to Find the Default Charset/Encoding in Java?

最佳答案

大多数情况下,命令行不使用标准的 Windows 代码页,而是使用旧的 DOS 代码页。根据What encoding/code page is cmd.exe using? ,您可以在命令行上使用命令 chcp 来了解它在您的环境中使用的内容。在我的计算机上,此命令显示 850。因此,我假设这是所使用的代码页,因此您应该在调用 new InputStreamReader 时使用它。

但是,我不确定这是否适用于所有区域设置中的所有 Windows 版本。事实上,我从未使用过日语、阿拉伯语、中文或韩语 Windows。

关于java - 将 Windows 命令行输出从 Cp1252 转换为类似的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20273056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com