学习 #命令行 #彩色 #ANSI转义序列

此文参考的链接如下:
https://www.jianshu.com/p/76b1752ddcbd 关于linux特殊含义的转义符\033
https://blog.csdn.net/qq_33866817/article/details/107449610 cmd \033转义字符对输出内容进行颜色变化出现乱码的解决办法

ANSI转义序列

以下内容摘录自 百度百科 https://baike.baidu.com/item/ANSI%E8%BD%AC%E4%B9%89%E5%BA%8F%E5%88%97/22735729?fr=aladdin

ANSI转义序列是一种带内信号的转义序列标准,用于控制视频文本终端上的光标位置、颜色和其他选项。在文本中嵌入确定的字节序列,大部分以ESC转义字符和”[“字符开始,终端会把这些字节序列解释为相应的指令,而不是普通的字符编码
ANSI序列是在二十世纪七十年代引入的标准,用以取代特定于终端供应商的序列,并在二十世纪八十年代早期开始在计算机设备市场上广泛使用。与早期缺少光标移动功能的系统相比,新生的电子公告板系统使用ANSI序列改进其显示。正是因为这个原因,ANSI序列变成了所有制造商共同采用的标准。
在21世纪,尽管硬件文本终端已经越来越少了,但ANSI标准依然存在,因为大多数终端模拟器会对部分ANSI转义序列进行解释。一个值得注意的例外是,在微软Windows 10更新TH2之前,Windows操作系统的Win32控制台是不支持ANSI转义序列的。

转义序列

序列具有不同的长度。所有序列都以ASCII字符ESC(27 /十六进制0x1B)开头,第二个字节则是0x40–0x5F(ASCII )范围内的字符。
标准规定,在8位环境中,这两个字节的序列可以合并为0x80-0x9F范围内的单个字节(详情请参阅C1控制代码)。但是,在现代设备上,这些代码通常用于其他目的,例如UTF-8的一部分或CP-1252字符,因此并不使用这种合并的方式。
除ESC之外的其他C0代码(通常是BEL,BS,CR,LF,FF,TAB,VT,SO和SI)在输出时也可能会产生与某些控制序列相似或相同的效果。
我们在程序中常用的转移序列如下:

\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m — \33[37m 设置前景色
\33[40m — \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标

如何让你的 CMD 显示转移字符

这里我们需要使用到 ANSICON 软件, 让我们的cmd 可以显示转义序列.

  1. 点这里下载ANSICON —From Github
  2. 找到最新的 release 版本进行下载.
  3. 找到 x64 文件夹, 并执行 ansicon.exe -i 即可完成组件安装, 【这里默认大家的电脑都是 64 位的】
  4. 之后用任意你喜欢的编程语言输出如下信息:

\033[32mHello,World\033[0m

  1. 你将会看到如下信息

image.png

  1. 如果你没有装此插件你看到的会是这个信息

image.png

封装一个转义序列库