我正在编写一个控制台应用程序,该应用程序需要打印一些非典型的(对于控制台应用程序而言)Unicode字符,例如音符,箱形图符号等。
大多数字符正确显示,或显示??如果该字型对于控制台使用的任何字体都不存在,但是我发现一个字符表现异常,可以用下面的代码行演示:
Console.Write("ABC");
Console.Write('♪'); //This is the same as: Console.Write((char)0x266A);
Console.Write("XYZ");
运行此命令时,它将打印ABC,然后将光标移回该行的开头,并用XYZ覆盖它。为什么会这样?
最佳答案
控制台不使用Uncode,因此必须将字符转换为8位代码页。 ♪
字符将转换为代码13(十六进制0x0d)的字符,即CR或回车符。
在大多数代码页中,例如code page 850,CR字符字形类似于四分音符,并且266a字符被指定为Unicode等效字符。
但是,如果将CR字符写入控制台,它将不会显示四分音符标志符号,而是被解释为控制字符CR,它将光标移动到行首。