cline 终端, 在 Background Exec 模式下的中文乱码问题

张开发
2026/4/10 13:13:16 15 分钟阅读

分享文章

cline 终端, 在 Background Exec 模式下的中文乱码问题
问题描述:在vscode中使用cline时, 如果终端执行模式选择了 Background Exec, cline在调用终端后获得的输出如果包含中文, 就会导致乱码.乱码会进一步导致agent的工作流产生问题.问题原因:cline的 Background Exec 会默认使用系统的cmd.exe(源码中的 return process.env.COMSPEC || “cmd.exe”)中文环境下, cmd的默认代码页是936, 输出的也是936的编码内容cline获取输出时, 使用的是默认的utf8对内容进行解码, 就导致了中文部分的乱码修复方案:方案一: 使用 “VS Code Terminal并配置合适的Default Terminal Profile”, 这个方案会让cline直接调用外部的vscode的终端执行命令并获取输出, 最好使用powershell7或git bash等输出支持好且默认utf8编码格式的终端方案二: 通过注册表, 修改cmd的默认代码页注册表路径:HKEY_CURRENT_USER\Console%SystemRoot%_system32_cmd.exe将CodePage的值从936改为65001, 注销或重启后生效(它不会将用任何方式打开的cmd都改为65001, 但在cline中是有效的)注意, COMSPEC是环境变量, 默认是 “%SystemRoot%\system32\cmd.exe”不要尝试修改这个变量来配置使用其它终端, 这可能导致其它依赖这个变量的程序出问题.而且经过我的测试, 将COMSPEC改为powershell7的路径后, cline无法获得任何输出;而改为git bash的路径后, 只会获得无意义的/c: /c: Is a directory, 这是cline源码中解析命令部分的问题, 把给cmd的参数喂给了git bash

更多文章