我想在一个Java控制台应用程序中给某些消息上色。我发现了各种各样的答案,例如,在所需的字符串之前包含\u001B[31m
,但这只是将·[37m
打印到我的控制台中。我怀疑这可能与我的计算机被设置为日语系统区域设置有关。但是我还没有找到任何关于如何解决这个问题的建议,这样它就可以在不同的Windows系统区域设置下工作。我希望得到任何帮助,了解这是否确实是原因,以及我如何解决它。作为参考,它 * 确实 * 在IDE控制台中工作,如IntelliJ或VS代码;在命令提示符中使用时,它尤其不起作用。
2条答案
按热度按时间5f0d552i1#
运行以下代码时,我可以在Windows 10上重现您的问题:
传递给
println()
的每个字符串以不同的字体颜色输出文本,并包含两个ANSI转义序列:"\u001b[31m"
将字体颜色设置为深红色。"\u001B[0m"
)将终端重置回默认颜色。有关详细信息,请参见How-to: Use ANSI colors in the terminal。
当输出被发送到Intellij IDEA内的控制台时,字体颜色的更改会正确呈现,如以下屏幕截图所示:
但是,正如您所指出的,在命令提示符窗口中运行相同的代码时,ANSI转义序列无法识别。
我不认为您的问题与区域设置有关。相反,您遇到了Windows上的命令提示符窗口的限制;它不能正确处理那些ANSI转义序列。
这个问题应该已经在Windows 10的最新版本中得到了修复,尽管显然需要对Windows注册表进行相关的修改(我没有实现)。
然而,有一种更简单、更安全的方法对我很有效:
注:
eblbsuwk2#