C#16位字符如何对所有Unicode字符进行编码?

C#16位字符如何对所有Unicode字符进行编码?,c#,unicode,char,C#,Unicode,Char,我读到C#在char(又称System.char)变量中存储unicode字符,这些变量的固定长度为16位。但是,16位不足以存储所有Unicode字符!在这种情况下,C#的char变量如何支持Unicode?简言之:代理项 这是一个好问题。Unicode比大多数人想象的更复杂,因为它引入了多个新概念(字符集、代码点、编码、代码单元),但我将尝试给出一个几乎完整的答案 简介: Unicode是一个字符集。字符集就是字符和代码点对的列表。代码点只是标识成对字符的数字。UTF-8、UTF-16和UT

我读到C#在
char
(又称
System.char
)变量中存储unicode字符,这些变量的固定长度为16位。但是,16位不足以存储所有Unicode字符!在这种情况下,C#的
char
变量如何支持Unicode?

简言之:代理项

这是一个好问题。Unicode比大多数人想象的更复杂,因为它引入了多个新概念(字符集、代码点、编码、代码单元),但我将尝试给出一个几乎完整的答案

简介:


Unicode是一个字符集。字符集就是字符和代码点对的列表。代码点只是标识成对字符的数字。UTF-8、UTF-16和UTF-32是编码。编码定义数字(代码点)如何以二进制形式(作为代码单元)表示。代码单元可以由一个或多个字节组成。(实际上,原始ASCII代码单位甚至只有7位长,但这是另一个故事Char可以支持
U+0000到U+FFFF范围内的任何unicode
它只支持0x0000到0xFFFF(即65536个字符)的字符范围)。如果希望它显示不同的代码页,则需要使用UTF-16设置的。可能的副本。它类似于基于16位Unicode的UTF-8。