2017-09-06 106 views
0

我使用C#中的Console API和找到的Node.js的Console API时尝试使用控制台之间的差异命令来改变颜色('\ X1B [31米'):C#和Node.js控制台输出有什么区别?

使用Node.js的这代码:

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

打印此: console with Teste in red


当我使用此C#代码:

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

我得到这样的输出: console with some chars and Teste in default color


为什么有这种差异?

+0

貌似的node.js一个处理转义序列(即'\ X1B [31m'),但其他控制台没有。你在问为什么第二个控制台(在Visual Studio中是这样)是按照它的方式编程的? –

+0

是的,我知道,X1B [31米是终端改变颜色的代码..我只是不明白,为什么C#不同意这个工作。 (我将编辑我的问题,使这个更清晰),他是用AnsiCon有 – thur

+0

@KeithNicholas ..我使用的是从Windows – thur

回答

2

节点使用https://github.com/libuv/libuv效仿的ANSI控制台。正常的Windows控制台不支持这一点,因此试图从C#做到这一点是行不通的。

+0

在Windows 10中的控制台支持虚拟终端的序列,但是它必须通过WinAPI的'GetConsoleMode'和'SetConsoleMode第一启用'。在旧版本中,你可以使用ANSICON或ConEmu,它使用的DLL注入到挂钩WinAPI的控制台功能,如'WriteConsole'。 – eryksun