gpt4 book ai didi

java - 如何使用 BufferedReader 从命令行输出中获取带有特殊字符的字符串

转载 作者:行者123 更新时间:2023-12-02 11:06:06 28 4
gpt4 key购买 nike

我有一个类可以从命令行获取输出:

public final class StreamPumper implements Runnable {
// input param is process.getInputStream()
private BufferedReader reader = new LineNumberReader(new InputStreamReader(input, encoding)));
@Override
public void run() {
try {
String str = reader.readLine();
while (str != null) {
consumeLine(str);
str = reader.readLine();
}
} catch (Exception e) {
//
} finally {
IOUtils.closeQuietly(reader);
}
}
}

reader.readLine() 将返回 [32m √ [39m [90mResponse status: 200 - Login[39m],但我期望的是 √ 响应正文中有“错误” - 错误:未经授权

另一个前例:[90m│[39m [90m│[39m 已执行 [90m│[39m 失败 [90m│[39m]

,我期望的是 │ │ 已执行 │ 失败 │

如何使用此类从命令行输出中获取带有特殊字符的字符串?它在命令行屏幕(Eclispe、IntelliJ、shell)上运行良好,但在使用调试或保存到文件时会出现问题。 enter image description here

最佳答案

您可以简单地设置与您期望的特殊字符相对应的编码。

以下内容适用于 UTF-8 中包含的特殊字符

InputStreamReader isr = new InputStreamReader(System.in,"UTF-8");
BufferedReader br = new BufferedReader(isr);
String str = br.readLine();
System.out.println(str);

由于您使用的是扩展 BufferedReader 的 LineNumberReader,因此以下代码适用于上述特殊符号:

InputStreamReader isr = new InputStreamReader(System.in,"UTF-8");
LineNumberReader br = new LineNumberReader(isr);
//BufferedReader br = new BufferedReader(isr);
String str = br.readLine();
System.out.println(str);

enter image description here

找到下面的图片:

关于java - 如何使用 BufferedReader 从命令行输出中获取带有特殊字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50952735/

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