首先,我们来区分一下字符和字节的概念:
字符:人们使用的记号,抽象意义上的一个符号,如'1', '中', 'a'等;
字节:计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间。也可以看做一个存储空间的单位。
C#中的char类型为16位,2字节,表示 Unicode 字符,用于表示U+0000 到 U+ffff范围内的Unicode字符。Unicode 标准使用称为码位的唯一的 21 位标量数字标识每个 Unicode 字符,并定义了 UTF-16 编码格式,这一格式指定如何将码位编码为一个或多个 16 位值的序列。每个 16 位值的范围为十六进制的 0x0000 到 0xFFFF,并存储在 Char 结构中。Char 对象的值是其 16 位数字(序号)值。(摘自:MSDN)
但在C++中的char类型为8位,1字节,表示一个字节;其用于表示Unicode字符的类型为wchar_t。
在UNICODE中,计算机存放字符串时,改为存放每个字符在Unicode字符集中的序号。目前计算机一般使用2个字节(16位)来存放一个序号,因此这种方式存放的字符也被称为宽字节字符。用来给UNICODE字符集编码的标准有很多种,比如:UTF-8, UTF-7, UTF-16, UnicodeBig等。
推荐大家看得网页:http://www.x5dj.com/Blog/00894834/00647031.shtml,其中详细介绍了字符,字节和编码的问题