Windows 10上的Ansi颜色,有点不起作用

时间:2016-09-21 22:11:31

标签: windows go terminal

带有颜色的控制台对于Windows来说是相当新的和令人兴奋的: - )

ex.Message ...

......突然间它停止了工作。或至少停在我的笔记本电脑上,Windows 10.0.14393

在我的机器上失败的应用程序在一个控制台中执行,即nodejs应用程序显示颜色,同一个二进制文件在另一台笔记本电脑上以正确的颜色运行。

golang I wrote some programs that printed using the ansi colour escapes and all was good

It looks like this

左上角,控制台节点输出,左下角,我的应用失败,右侧vscode

httpDump.exe是此演示的名称(如果它令人困惑)

它在vscode集成终端窗口中正确显示。

我尝试删除 fmt.Println("\033[31mSome Text\033[0m") 注册表项并重新启动(多次)。我删除了可能有设置的快捷方式。我尝试在此计算机上以另一个用户身份运行(无效)

我欢迎任何提示。

1 个答案:

答案 0 :(得分:0)

自该更新以来,您必须在Windows上启用虚拟终端处理。

我通常添加一个文件init_windows.go,该文件在Windows中进行设置,但也与其他操作系统兼容:

// +build windows

package main

import (
    "os"

    "golang.org/x/sys/windows"
)

func init() {
    stdout := windows.Handle(os.Stdout.Fd())
    var originalMode uint32

    windows.GetConsoleMode(stdout, &originalMode)
    windows.SetConsoleMode(stdout, originalMode|windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING)
}

如从https://github.com/sirupsen/logrus/issues/172#issuecomment-353724264

复制