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

Windows命令提示符下Python/C代码ASCII转义序列显示异常问题咨询

解决Windows命令提示符下ANSI转义序列显示乱码问题

问题原因

默认Windows传统命令提示符(cmd.exe)未开启虚拟终端解析功能,无法识别ANSI转义序列开头的ESC字符(十进制27,八进制表示为\33/\033),会将转义序列作为普通文本直接输出,因此出现乱码现象。

解决方案

方案1:修改系统配置全局开启ANSI支持(永久生效,仅支持Windows 10 1511及以上版本)

  • 打开cmd后执行如下命令:
    reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1 /f
  • 执行完成后重启cmd即可全局生效,所有在cmd中运行的程序都可以正常解析ANSI转义序列。

方案2:代码侧主动开启虚拟终端支持(单程序生效,无需修改系统配置)

Python 实现示例

import ctypes
# 调用Windows API开启虚拟终端处理
kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)
# 后续转义序列代码可正常运行
print("12345\33[5D67890")

C语言 实现示例

#include <stdio.h>
#include <windows.h>

int main()
{
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    DWORD mode = 0;
    // 获取当前控制台模式
    GetConsoleMode(hOut, &mode);
    // 追加虚拟终端解析支持
    mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
    SetConsoleMode(hOut, mode);
    // 转义序列可正常解析
    printf("12345\033[5D67890\n");
    return 0;
}

方案3:使用默认支持ANSI转义的终端工具

  • 可直接使用Windows Terminal、PowerShell 7+、Cmder、ConEmu等终端工具运行代码,无需额外配置即可正常解析ANSI转义序列。
  • Windows 10以下版本系统原生cmd不支持ANSI转义序列,必须使用第三方终端工具才能实现对应效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:39:03