gpt4 book ai didi

c# - 为什么 Console.Write 以不同方式对待字符 x266A?

转载 作者:太空狗 更新时间:2023-10-29 21:30:03 24 4
gpt4 key购买 nike

我正在编写一个控制台应用程序,它需要打印一些非典型(对于控制台应用程序)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或Carrage Return。

在大多数代码页中,例如 code page 850 ,CR 字符字形类似于四分音符,266a 字符被指定为 Unicode 等效字符。

但是,如果您将 CR 字符写入控制台,它不会显示四分音符字形,而是将其解释为将光标移动到行首的控制字符 CR。

关于c# - 为什么 Console.Write 以不同方式对待字符 x266A?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com