2017-09-06 7 views
0

J'utilise l'API Console de C# et de trouver une différence entre l'API Console de Node.js lorsque vous essayez d'utiliser la console des commandes pour changer de couleur (`\ x1B [31m '):Quelle est la différence entre les sorties de la console C# et Node.js?

En utilisant Node.js cette Code:

console.log("\x1B[31mTeste"); 

Prints ceci: console with Teste in red


Lorsque j'utilise ce code C#:

Console.Write("\x1B[31mTeste"); 

Je reçois cette sortie: console with some chars and Teste in default color


Pourquoi cette différence?

+0

On dirait que node.js gère les séquences d'échappement (c'est-à-dire '\ x1B [31m'), mais pas l'autre console. Demandez-vous pourquoi la deuxième console (est-ce dans Visual Studio?) A été programmée telle qu'elle était? –

+0

oui, je sais que x1B [31m est un code pour la couleur de changement de terminal .. Je ne comprends tout simplement pas pourquoi C# ne fonctionne pas avec ça. (Je vais éditer ma question pour rendre ceci plus clair) – thur

+0

@KeithNicholas il emploie AnsiCon là .. J'utilise le cmd par défaut de Windows – thur

Répondre

2

Le noeud utilise https://github.com/libuv/libuv pour émuler une console ANSI. La console Windows normale ne supporte pas cela, donc essayer de le faire à partir de C# ne fonctionnera pas.

+0

La console de Windows 10 prend en charge les séquences de terminaux virtuelles, mais elle doit d'abord être activée via WinAPI 'GetConsoleMode' et' SetConsoleMode '. Dans les anciennes versions, vous pouvez utiliser ANSICON ou ConEmu, qui utilisent l'injection de DLL pour accrocher les fonctions de la console WinAPI telles que 'WriteConsole'. – eryksun