从命令行获取 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 时它将始终 运行:
在 Windows 上打开 mintty - 大概这会启动 bash shell.
转到您的主目录(即 cd ~
)
打开或创建一个 .bashrc
文件。
将其放入文件中(根据需要更新 chp.com
程序的路径):
/c/Windows/System32/chcp.com 65001
然后重启终端window,应该可以了。
正如上面@digijay 和@Dai 所回复的,这里描述了问题的原因https://github.com/git-for-windows/git/issues/2806
git-for-windows 的下一个版本解决了这个问题。在发布修复程序之前,我自己解决了这个问题,方法是在 运行 宁我的赛普拉斯 运行 命令之前 运行 在 bash 命令行简单地解决这个问题:
> cmd //c chcp 65001
我正在使用 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 时它将始终 运行:
在 Windows 上打开 mintty - 大概这会启动 bash shell.
转到您的主目录(即
cd ~
)打开或创建一个
.bashrc
文件。将其放入文件中(根据需要更新
chp.com
程序的路径):/c/Windows/System32/chcp.com 65001
然后重启终端window,应该可以了。
正如上面@digijay 和@Dai 所回复的,这里描述了问题的原因https://github.com/git-for-windows/git/issues/2806
git-for-windows 的下一个版本解决了这个问题。在发布修复程序之前,我自己解决了这个问题,方法是在 运行 宁我的赛普拉斯 运行 命令之前 运行 在 bash 命令行简单地解决这个问题:
> cmd //c chcp 65001