gpt4 book ai didi

java - 如何从 Java 将转义字符打印到 Windows 控制台

转载 作者:行者123 更新时间:2023-11-30 10:27:49 25 4
gpt4 key购买 nike

我正在尝试将彩色文本打印到 Windows 的控制台,它需要使用转义字符 \u001B .

在我的 IntelliJ IDEA 中,代码 System.out.print("\u001B[92m Hello!"):打印绿色文本“Hello!”。

不幸的是,如果我从 CMD 运行我的应用程序,它对控制台不起作用。我尝试使用 ASCII 和 UTF-8 编码,但没有用。

例如前面提到的和下面的片段

try (OutputStreamWriter writer = new OutputStreamWriter(
System.out,
StandardCharsets.UTF_8))
{
writer.write("\u001B[92m Hello!");
}

打印类似这样的东西 <question mark in rectangle>[92m Hello!

信息:对于最后一个示例,我使用命令 chcp 65001 将控制台代码页更改为 Utf-8,并且我还使用 -Dfile.encoding=UTF-8 运行我的 java 应用程序启用标志,以便 Java 和控制台使用相同的编码。结果是一样的。

这很有趣,因为我可以从 .bat 脚本打印彩色文本。例如,任务可以通过 echo <ESC>[92m Hello! 完成其中 <ESC>是一个转义字符,可以使用键盘组合 Alt + 0 + 2 + 7 输入到 Notepad++。

更有趣的是,Java 正确输出转义符<ESC>到外部文件。我很高兴知道这个问题的有效(最好是 native )解决方案。

最佳答案

ANSI/VT100 转义序列并不适用于所有终端。 IntelliJ 显然默认理解它们,但为了让它在常规 Windows CMD.exe 窗口上工作,您需要 enable the support first .

另见 How to make win32 console recognize ANSI/VT100 escape sequences?

关于java - 如何从 Java 将转义字符打印到 Windows 控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45081061/

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