1

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

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

截屏

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

赛普拉斯规范在 Windows 命令提示符中运行 -

截屏

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

关于如何纠正这个问题的任何想法?

4

2 回答 2

2

此 GitHub 问题 中描述了该问题

问题是赛普拉斯正在通过其发送 UTF-8 编码文本,该文本stdout在被 Mintty 接收之前被 Windows 破坏(这是在 Windows 上托管bash和运行git的内容)。

我知道 Mintty 还没有指示 Windows 不要破坏stdout它的进程 - (cmd.exe但是,这就是它在那里工作的原因) - 但我们可以通过使用该chcp程序更改我们的 Windows OEM 代码页设置来自己做到这一点(位于C:\Windows\System32\chcp.com是的,这是一个.com,不是.exe)。你可以在你的文件中添加一个命令,.bashrc这样当你启动 Mintty 时它就会一直运行:

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

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

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

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

    /c/Windows/System32/chcp.com 65001
    
  5. 然后重新启动终端窗口,它应该可以工作。

于 2021-01-12T17:20:15.610 回答
0

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

下一个版本的 git-for-windows 解决了这个问题。在发布修复程序之前,我通过在运行 cypress 运行命令之前在 bash 命令行中简单地运行它来为自己解决了这个问题:

> cmd //c chcp 65001
于 2021-01-14T12:00:44.283 回答