问题描述
我正在使用cypress进行测试自动化,并且从Git for Windows bash终端运行测试规范时,在结果输出中出现了奇怪的字符:
赛普拉斯规格在Windows bash的Git中运行-
如果我从Windows命令提示符下运行cypress,则输出字符正确:
cypress spec在Windows命令提示符中运行-
我正在使用Windows 7,赛普拉斯5.1.0和Git for Windows 2.28.0(含薄荷3.2.0)
关于如何更正此问题的任何想法?
解决方法
The issue is described in this GitHub issue。
问题在于赛普拉斯通过其 <asp:LinkButton.... OnClientClick='<%# "ValidateEmail(\"" + Eval("usr_email") + "\"); return false;" %>'
<asp:LinkButton.... OnClientClick='<%# "ValidateEmail(\"" + DataBinder.Eval(Container.DataItem,"usr_email") + "\"); return false;" %>'
发送 UTF-8 编码文本,该文本在被 Mintty 接收之前被 Windows 损坏(这是托管 stdout
并在其上运行 bash
视窗)。
我知道 Mintty 还没有指示 Windows 不要破坏它处理的 git
-(然而,stdout
确实如此,这就是它在那里工作的原因) - 但我们可以通过使用 cmd.exe
程序更改我们的 Windows OEM 代码页设置(位于 chcp
,是的,这是一个 C:\Windows\System32\chcp.com
,而不是 .com
)。您可以在 .exe
文件中添加一个命令,以便在您启动 Mintty 时它始终会运行:
-
在 Windows 上打开 mintty - 大概这会启动一个 bash shell。
-
转到您的主目录(即
.bashrc
) -
打开或创建一个
cd ~
文件。 -
将其放入文件中(根据需要更新
.bashrc
程序的路径):chp.com
-
然后重新启动终端窗口,它应该可以工作了。
正如@digijay 和@Dai 在上面回答的那样,问题的原因在这里描述https://github.com/git-for-windows/git/issues/2806
该问题已在 git-for-windows 的下一个版本中得到解决。在发布修复程序之前,我通过在运行 cypress run 命令之前在 bash 命令行中简单地运行它来为自己解决了这个问题:
> cmd //c chcp 65001