ホームページ >バックエンド開発 >Golang >Windows 10 で ANSI カラーが機能しないのはなぜですか?

Windows 10 で ANSI カラーが機能しないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-28 16:58:02407ブラウズ

Why Aren't My ANSI Colors Working on Windows 10?

Windows 10 で Ansi Colors が機能しない: 修正

最近の開発により、Windows 10 ではカラー印刷を可能にするコンソールが導入されました。 Ansi エスケープ シーケンス。ただし、一部のユーザーは、ラップトップでこれらの色が正しく表示されないという問題に遭遇しています。

そのようなユーザーの 1 人は、Windows 10.0.14393 でバイナリを使用しており、Ansi カラー印刷が nodejs アプリで問題なく動作することを観察しましたが、独自のアプリケーションではありません。コンソールに関連付けられているレジストリ キーとショートカットを削除し、バイナリを別のユーザーとして実行しても、問題は解決しません。

解決策: 仮想ターミナル処理を有効にする

キーこの問題を解決するには、Windows で仮想端末処理 (VTP) を有効にする必要があります。これは、最近の更新以降、必須になっています。次の手順に従うことができます:

  1. 初期化ファイル (init_windows.go) の作成:
    init_windows.go という名前のファイルに次のコードを追加します。

    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)
    }
  2. メイン関数でファイルを参照します:
    メインの Go ファイルで、カラーを実行する前に必ず init_windows.go ファイルを参照して VTP をアクティブにしてください。印刷操作。

注: この解決策は、この問題スレッドから適応されました: [https://github.com/sirupsen/logrus/issues/172#issuecomment-353724264] (https://github.com/sirupsen/logrus/issues/172#issuecomment-353724264)

以上がWindows 10 で ANSI カラーが機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。