You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows PowerShell突然显示怪异字符(含ANSI转义码)求解答

解决Windows PowerShell显示ANSI转义字符的问题

嘿,我之前也碰到过一模一样的情况!那些[39;49m[32m这类怪异字符其实是ANSI转义序列——它们本来是用来给终端输出添加颜色、格式的标记,但PowerShell没能正确解析,才直接把代码裸显出来了。

常见原因

  • 你用的可能是旧版Windows PowerShell(5.1及更早版本):这类版本默认没有启用ANSI转义序列的解析功能,当脚本或CLI工具输出带颜色的ANSI代码时,就会出现这种乱码。
  • 工具兼容性问题:有些第三方工具(比如Node.js的CLI、Python脚本)默认会输出ANSI序列,但没检测当前终端是否支持,导致在不兼容的PowerShell环境里失效。
  • 配置意外变更:偶尔PowerShell的终端配置被修改,关闭了ANSI支持。

解决办法

1. 临时启用(仅当前会话有效)

在PowerShell中执行以下命令,然后关闭并重新打开PowerShell:

Set-ItemProperty HKCU:\Console VirtualTerminalLevel -Type DWORD 1

2. 永久启用(所有会话生效)

  • 按下Win+R输入regedit打开注册表编辑器
  • 导航到路径:HKEY_CURRENT_USER\Console
  • 找到或新建名为VirtualTerminalLevel的DWORD值,将其数据设置为1
  • 重启PowerShell后,ANSI序列就能正常渲染成颜色了。

3. 升级到PowerShell 7+(推荐)

新版的PowerShell(原PowerShell Core)默认完全支持ANSI转义序列,还修复了很多旧版的兼容性问题,功能也更丰富,长期使用的话建议直接升级。

4. 针对特定工具关闭颜色输出

如果只是某个工具导致的问题,可以看看该工具是否支持关闭颜色的参数,比如很多CLI工具支持--no-color--color=never,添加这个参数后就不会输出ANSI序列了。

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

火山引擎 最新活动