Windows bash 重定向输出有奇怪的编码

Windows bash 重定向输出有奇怪的编码

我使用 grep 搜索模式,一切正常。但是,当我将输出重定向到任何文件时,由于编码原因,输出会被破坏。

有没有办法让 Windows 中的 bash 以正常的 UTF-8 编码输出文件,以便普通文本编辑器可以正确读取它?

编辑:当我将 grep 结果重定向输出到任何文件时,它看起来像这样:

[35m[KFile.txt[m[K[36m[K:[m[K[01;31m

我正在运行最新的 Windows,并且已经通过使用开发人员模式安装了 bash 并启用了 bash。

在此过程中,输出变得混乱。即使是 Windows 版本的 Linux 文本编辑器也会显示奇怪的输出。但是,如果我对包含奇怪输出的文件运行 cat。它会正常显示输出,没有任何问题。

我正在使用 Notepad++ 来查看结果。

谢谢

答案1

这不是编码问题。您正在捕获其输出的程序正在发出 ANSI 控制代码来设置光标位置、前景色等。

当您使用cat控制代码时,它们会由 tty 处理,因此不会以原始形式出现。

相关内容