2017-09-29 159 views
0

我在搜索关于在NetBeans中更改控制台的输出颜色,发现this后。 我尝试了第一个答案,并完美地改变颜色。我尝试了第五个答案,并且...也工作了。ANSI颜色之间的区别?

我的问题是:为什么为每种颜色指定的字符串在第一个和第五个不同?

第一个答案的例子:

public static final String ANSI_BLUE = "\u001B[34m"; 

第五答案的例子:

public static final String BLUE = "\033[0;34m"; // BLUE 

我做了一些研究,但我实在想不出为什么。

我欣赏一个答案或帮助指示我理解它。

回答

1

反斜杠符号表示一个字节的本地表示八进制数字。符号表示16位十六进制Unicode表示。 \u001b\033都表示一个ESC,所以它们在这方面是相同的。

就这样说,这两个序列是不一样的。第一个序列给出一个命令,34,这意味着“前景色蓝色”。第二个序列提供了两个用分号分隔的命令。第二个是34,但第一个是0,这意味着“重置”。

因此,第一个序列将颜色更改为蓝色,而第二个序列重置设置,然后将颜色设置为蓝色。

0

除了给出的答案,我想补充一点我在01​​链接中找到的信息。在页面中,您可以看到构建转义序列的不同方式及其每个部分的含义以及可能的值。作为一个例子:

Esc[Value;...;Valuem
设置图形模式: 调用由下列值指定的图形功能。这些指定的功能保持有效,直到下一次出现此转义序列。图形模式更改屏幕上显示的文本的颜色和属性(如粗体和下划线)。

文本属性
0所有属性关闭
1粗体上
4下划线(仅单色显示适配器)
5眨眼上
7反向视频
8内藏式上