从命令行获取 Git for Windows bash when 运行 cypress 中的奇怪字符

Getting weird characters in Git for Windows bash when running cypress from command line

我正在使用 cypress 进行测试自动化,当 运行从 Git 为 Windows bash 终端执行测试规范时,我在结果中得到了奇怪的字符输出:

Git 中的赛普拉斯规范 运行 Windows bash -

如果我从 Windows 命令提示符 运行 cypress 输出字符是正确的:

Windows 命令提示符中的 cypress 规范 运行 -

我正在使用 Windows 7、cypress 5.1.0 和 Git for Windows 2.28.0 with mintty 3.2.0

关于如何纠正这个问题有什么想法吗?

The issue is described in this GitHub issue.

问题是 Cypress 正在通过其 stdout 发送 UTF-8 编码的文本,在被 Mintty 接收之前被 Windows 破坏(这是主机 bash 和 运行s git 在 Windows).

我知道 Mintty 还没有指示 Windows 不要破坏它处理的 stdout -(cmd.exe 确实如此,这就是它在那里工作的原因) - 但是我们可以通过使用 chcp 程序(位于 C:\Windows\System32\chcp.com 是的,那是 .com 而不是 .exe 来更改我们的 Windows OEM 代码页设置).您可以将命令添加到 .bashrc 文件,这样当您启动 Mintty 时它将始终 运行:

  1. 在 Windows 上打开 mintty - 大概这会启动 bash shell.

  2. 转到您的主目录(即 cd ~

  3. 打开或创建一个 .bashrc 文件。

  4. 将其放入文件中(根据需要更新 chp.com 程序的路径):

    /c/Windows/System32/chcp.com 65001
    
  5. 然后重启终端window,应该可以了。

正如上面@digijay 和@Dai 所回复的,这里描述了问题的原因https://github.com/git-for-windows/git/issues/2806

git-for-windows 的下一个版本解决了这个问题。在发布修复程序之前,我自己解决了这个问题,方法是在 运行 宁我的赛普拉斯 运行 命令之前 运行 在 bash 命令行简单地解决这个问题:

> cmd //c chcp 65001