Ansi colours on Windows 10, sort of not working

大憨熊 提交于 2020-01-30 05:01:11

问题


Console with colours is fairly new and exciting for Windows :-)

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

... then suddenly it stopped working. Or at least stopped on my laptop, Windows 10.0.14393

The app that fails on my machine does so in a console that a nodejs app has displayed colour in, the same binary runs with the correct colour on another laptop.

golang fmt.Println("\033[31mSome Text\033[0m")

left-top, console node output, left-bottom, my app failing, right vscode

httpDump.exe is the name of this demo (in case it was confusing)

It does display correctly in the vscode integrated terminal window.

I've tried deleting the HKLM\Console registry entry and restarting (several times). I deleted the short-cut that may have settings in it. I've tried running as another user on this machine (does not work)

I'd welcome any hints.


回答1:


You have to enable virtual terminal processing on Windows since that update.

I usually add a file init_windows.go which sets this in windows but is also compatible with other OS:

// +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)
}

as copied from: https://github.com/sirupsen/logrus/issues/172#issuecomment-353724264



来源:https://stackoverflow.com/questions/39627348/ansi-colours-on-windows-10-sort-of-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!