如何打印0xFFFF以上的字符?

时间:2012-07-25 14:14:22

标签: c# unicode char

我想知道是否可以使用Windows打印0xFFFF以上的字符?

我正在使用Microsoft Visual Studio 2010和Windows XP。字符是16位宽,因此大于0xFFFF的代码点不能真正适合单个字符。即使我尝试这个:

int codepoint = char.ConvertToUtf32(charHS, charLS);

我会从代理对中获取代码点,但它仍然不适合char。

如果我将较高的多语言平面中的字符粘贴到C#中的字符串中,则字符串的长度为2.如果我尝试打印字符串,那么我将打印两个代理字符,这些字符不是字符,EG,没有代码点,只有一对,而不是“真正的”字符。

不应该有类似32位宽的字符,可以保存高于0xFFFF的代码点吗?

1 个答案:

答案 0 :(得分:5)

  

不应该有类似32位宽字符的东西,可以保存高于0xFFFF的代码点吗?

也许。但Windows支持在基本多语言平面之外输出字形是基于UTF-16。分成高和低代理对,并传递,好像它是两个字符。