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

 

posted @ 2020-09-27 21:04  ProZkb  阅读(756)  评论(0编辑  收藏  举报