我正在编写一个控制台应用程序,该应用程序需要打印一些非典型的(对于控制台应用程序而言)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,它将光标移动到行首。

10-01 13:45
查看更多