C#之汉字与字节
数据库表字段为varchar(n)类型,存英文很简单,只要字母个数不大于n即可。 但是对于汉字,按照同样的方法就不行了。 因为对于汉字不同的字符集,在数据库占用的字节是不一样的。 UTF-8字符集,一个汉字占三个字节, gbk字符集,一个汉字占两个字节, 比如varchar(10)类型的字段,UTF-8的汉字,只能存3个,gbk字符集的汉字却能存5个。 字节就是Byte 汉字=2/3字节 1字节(Byte)=8字位=8个二进制数 1字位(bit)=1个二进制数 1B=8b 1KB=1024B 1MB=1024KB 1GB=1024MB 通常情况下,把B称为字节、b称为字位、KB称为千字节、MB称为兆字节
string name = "a"; int num = Encoding.UTF8.GetBytes(name).Length;//1 string name2 = "A"; int num2 = Encoding.UTF8.GetBytes(name2).Length;//1 string name3 = "朱"; int num3 = Encoding.UTF8.GetBytes(name3).Length;//3 string name4 = "0"; int num4 = Encoding.UTF8.GetBytes(name4).Length;//1 string name5 = "朱朱"; int num5 = Encoding.UTF8.GetBytes(name5).Length;//6
英文字母 字节数 : 1; 编码:GB2312 字节数 : 1; 编码:GBK 字节数 : 1; 编码:GB18030 字节数 : 1; 编码:ISO-8859-1 字节数 : 1; 编码:UTF-8 字节数 : 4; 编码:UTF-16 字节数 : 2; 编码:UTF-16BE 字节数 : 2; 编码:UTF-16LE 中文汉字: 字节数 : 2; 编码:GB2312 字节数 : 2; 编码:GBK 字节数 : 2; 编码:GB18030 字节数 : 1; 编码:ISO-8859-1 字节数 : 3; 编码:UTF-8 字节数 : 4; 编码:UTF-16 字节数 : 2; 编码:UTF-16BE 字节数 : 2; 编码:UTF-16LE
人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。