Roy*_*mir 4 .net c# .net-4.0 char
char的大小是:2(msdn)
sizeof(char) //2
Run Code Online (Sandbox Code Playgroud)
一个测试 :
char[] c = new char[1] {'a'};
Encoding.UTF8.GetByteCount(c) //1 ?
Run Code Online (Sandbox Code Playgroud)
为什么价值是1?
(当然,如果c是像'ש'那样的unicode char,那么它确实显示2应该.)
a 是不是.net char?
Jon*_*eet 14
这是因为'a'只需要一个字节来编码UTF-8.
Encoding.UTF8.GetByteCount(c)将告诉你在UTF-8中编码给定数组字符所需的字节数.有关Encoding.GetByteCount更多详细信息,请参阅文档.这与char.NET内部类型的宽度完全不同.
代码点小于128的每个字符(即U + 0000到U + 007F)需要一个字节来编码为UTF-8.
其他字符在UTF-8中占用2个,3个甚至4个字节.(有超过U + 1FFFF值这将需要5或6个字节编码,但他们不是Unicode的一部分的时刻,而且可能永远不会.)
请注意,用UTF-8编码的4个字节的唯一字符char无论如何都不能编码.A char是UTF-16代码单元,U + FFFF上的任何Unicode代码点都需要两个UTF-16代码单元来形成一个代理对来代表它们.