ホームページ >バックエンド開発 >Golang >Windows 10 コンソールに ANSI カラーが表示されないのはなぜですか?

Windows 10 コンソールに ANSI カラーが表示されないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 02:29:28683ブラウズ

Why Are ANSI Colors Not Displaying in My Windows 10 Console?

Windows 10 で ANSI カラー サポートを有効にする: 永続的なジレンマ

Windows 10 では、ANSI エスケープ シーケンスを使用してコンソール出力に色を追加するのは困難です。比較的最近の機能。しかし、最近、特定のマシンで ANSI カラーが正しく表示されないという特有の問題が発生しています。

状況の概要:

アプリケーションが ANSI カラーを表示しているとユーザーが報告しました。コンソールが突然機能を停止しました。アプリは他のラップトップでは意図したとおりに動作しますが、自分の Windows 10 マシン (v14393) では失敗します。

調査とトラブルシューティング:

  • HKLMConsole レジストリ エントリの削除
  • ショートカットの設定を変更して、それらが原因ではないことを確認しても結果は得られませんでした。
  • 同じマシン上で別のユーザーとしてアプリケーションを実行すると、やはり失敗します。 .

解決策:

この問題を解決する鍵は、Windows で仮想端末処理を有効にすることにあります。この設定は、問題の原因となったアップデートで導入されました。

仮想端末処理を有効にするには、Go アプリケーションの init() 関数に次のコードを追加します。

<code class="go">import (
    "golang.org/x/sys/windows"
    "os"
)

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

このコードコンソール モードを変更して仮想端末処理を有効にし、ANSI カラー エスケープ シーケンスが解析されて正しく表示されるようにします。

結論:

上記の解決策を実装すると、問題は解決されます。 Windows 10 で機能しない ANSI カラーの一部が修正されます。仮想端末処理を有効にすると、システムやユーザーの設定に関係なく、アプリケーションは再びコンソールに豊かな色を表示できるようになります。

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

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