MSYS2 ls.exe在CMD/PowerShell输出乱码,寻求正常使用方法
在CMD或PowerShell中正常使用MSYS2工具(解决乱码与调用问题)
问题场景
- 在Windows的CMD或PowerShell中直接执行命令:
c:\tools\msys2\usr\bin\ls.exe - 输出出现转义字符序列:
$'\343\200\214\345\274\200\345\247\213\343\200\215\350\217\234\345\215\225' - 该工具在MSYS2的MinTTY bash中运行正常,需求为在CMD/PowerShell中直接使用ls及其他MSYS2工具
环境信息
MSYS_NT-10.0-25300 version 3.4.5.x86_64 (runneradmin@fv-az411-742) (gcc version 11.3.0 (GCC) ) 2023-01-20 09:17 UTC
解决方案
1. 修复乱码问题
MSYS2工具默认输出UTF-8编码,而CMD/PowerShell默认控制台编码不匹配,需先调整编码:
- CMD环境:执行命令
chcp 65001切换控制台为UTF-8编码,之后再运行MSYS2工具 - PowerShell环境:执行以下命令设置编码:
[Console]::OutputEncoding = [System.Text.UTF8Encoding]::UTF8 [Console]::InputEncoding = [System.Text.UTF8Encoding]::UTF8
2. 实现便捷调用(添加到PATH)
将MSYS2的bin目录加入系统环境变量PATH,无需输入完整路径即可调用工具:
- 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量
- 在系统变量的
Path条目里添加c:\tools\msys2\usr\bin - 重启CMD/PowerShell使设置生效
3. 加载完整MSYS2环境(解决依赖缺失)
如果直接调用工具仍出现异常,可通过MSYS2的bash加载完整环境后执行工具:
- CMD中执行:
c:\tools\msys2\usr\bin\bash.exe -lc "ls" - PowerShell中执行:
& c:\tools\msys2\usr\bin\bash.exe -lc "ls"
这种方式会加载MSYS2的全部环境变量,避免工具依赖缺失的问题
内容的提问来源于stack exchange,提问作者kouhe3
相关产品推荐
相关产品推荐

