如何将项目符号打印到控制台
本文关键字:打印 控制台 符号 项目 | 更新日期: 2023-09-27 18:20:39
这是我的代码:
Console.WriteLine("•");
或者这个:
Console.WriteLine("'u2022");
结果(在我的电脑上):
*嘟嘟*
所需结果:
•
如何使上面的字符出现在我的控制台上?
我知道嘟嘟声是从哪里来的,因为项目符号被翻译成ASCII BELL
字符。这个问题是在试图了解更多关于代码页437的信息时产生的。
这似乎比列出的其他选项更容易解决问题。(它现在可用,即使最初问这个问题时没有。)
Console.OutputEncoding = System.Text.Encoding.UTF8;
我刚刚记得一个Windows控制台模式,它不处理ASCII代码,如bell和linefeed。我需要这些功能:
[DllImport("kernel32.dll")]
static extern IntPtr GetStdHandle(int handle);
[DllImport("kernel32.dll")]
static extern bool SetConsoleMode(IntPtr handle, int mode);
在我尝试写入控制台之前,我会这样做:
SetConsoleMode(GetStdHandle(-11), 2);
这将获取连接到stdout的本机屏幕缓冲区的句柄,并禁用ENABLE_PROCESSED_OUTPUT标志。
Console.WriteLine("•");
输出:
•♪◙
哇,这意味着它不会处理来自WriteLine
的换行和回车。
Console.Write("•");
输出:
•
宾果!
现在,如果我想在打印更多文本之前将控制台恢复到"正常"模式,我可以这样做:
SetConsoleMode(GetStdHandle(-11), 3);
您很可能需要将控制台字体更改为支持该字符的字体。
查看本文:更改控制台字体
•
是7,但7也是ASCII BEL控制字符。NET在将Unicode字符串打印到控制台时,会将其转换为CP850或本地等效字符串。当您将内容打印到控制台时,它们会被解释为Extended ASCII,所以字节7被解释为BEL控制字符,而不是项目符号。
若要强制控制台将低字节值解释为图形字符,则必须对其进行转义。NET应该自动执行,但它没有。
你需要用ESC ^
做准备。所以试着打印这个:"'x1B^'x07"