You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用cmd.exe时ESC转义序列失效,游戏输出着色异常

Java控制台着色在cmd.exe失效的解决办法

我在给游戏输出添加着色效果时,遇到了这样的问题:代码在NetBeans中能正常显示带颜色的日志,但在cmd.exe里只会显示类似“<-”的乱码。使用的错误代码如下:

System.out.print("/033[34m[GAME/info]: FPS recorder has start/033[0m");
        
System.out.print("
/033[37m[GAME/debug]: FPS Print-Out will print every "+ time +".000ms/033[37m");

问题根源与修正

  1. 转义字符错误:ANSI颜色转义序列的起始必须是**反斜杠**,误用斜杠/会导致cmd无法解析着色指令,直接输出乱码。
  2. 颜色重置错误:第二行输出末尾用了/033[37m,应该用\033[0m来重置所有文本格式,避免后续输出继承当前颜色。

修正后的正确代码:

System.out.print("\033[34m[GAME/info]: FPS recorder has started\033[0m");
        
System.out.print("\n\033[37m[GAME/debug]: FPS Print-Out will print every "+ time +".000ms\033[0m");

cmd.exe额外配置

部分旧版Windows cmd默认不支持ANSI转义序列,需手动开启:

  • 临时开启:在cmd中执行以下命令,重启cmd后生效
    reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1
    
  • 永久方案:改用Windows Terminal,它原生支持ANSI颜色输出,无需额外设置。

内容的提问来源于stack exchange,提问作者user15990930

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 09:42:16