Maison >développement back-end >Golang >Pourquoi mes couleurs ANSI ne fonctionnent-elles pas sous Windows 10 ?

Pourquoi mes couleurs ANSI ne fonctionnent-elles pas sous Windows 10 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 17:43:30771parcourir

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

Les couleurs Ansi ne fonctionnent pas sous Windows 10 ?

Dans le domaine de Windows, la possibilité d'afficher les couleurs sur la console est une nouveauté relativement nouvelle. et fonctionnalité passionnante. Cependant, au milieu de cet enthousiasme, certains utilisateurs ont été confrontés à un problème déroutant : la sortie couleur attendue a soudainement disparu. Cet article vise à élucider la cause et à fournir une solution.

L'énigme des couleurs de la console Windows

Un de ces utilisateurs rencontre ce problème lors de l'exécution d'un programme qui utilise des échappements de couleurs ANSI. Ce qui est perplexe, c'est que le même binaire produit correctement les couleurs sur un autre ordinateur portable. Sur la machine concernée, la fenêtre de la console, bien qu'elle affiche correctement les couleurs lors du lancement depuis l'application Node.js, ne parvient pas à le faire pour les autres programmes. Cela suggère certaines incohérences sous-jacentes au niveau du système.

Le rôle du traitement du terminal virtuel

Pour approfondir la solution, nous devons d'abord comprendre le concept de traitement du terminal virtuel dans Fenêtres. Cette fonctionnalité, introduite dans une mise à jour, active des fonctionnalités de terminal avancées qui sont essentielles au rendu correct des couleurs ANSI. Malheureusement, il est désactivé par défaut.

Activation du traitement du terminal virtuel

Pour résoudre le problème, il est nécessaire d'activer le traitement du terminal virtuel sur votre machine Windows. Ceci peut être réalisé en ajoutant un fichier d'initialisation (par exemple, init_windows.go) qui définit cette option. L'exemple de code suivant montre comment procéder :

<code class="go">// +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)
}</code>

En incorporant ce code dans votre programme, vous pouvez vous assurer que le traitement du terminal virtuel est activé, permettant à votre application d'afficher correctement les couleurs ANSI sous Windows 10.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn