utf-8 和gbk编码的差别

UTF- 8:

是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。

GBK

是国家标准GB2312基础上扩容后兼容GB2312的标准。

GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包括所有中文字符,是国家编码。通用性比UTF8差,只是UTF8占用的数据库比GBD大


全部网页一般採用utf-8,由于网页中基本是大量的html代码採用utf-8比較不会占用空间

utf-8编码的数据库varchar(30) 之多能够保存10个汉字。由于一个汉字占三个字节



4.0版本号下面,varchar(20),指的是20字节,假设存放UTF8汉字时,仅仅能存6个(每一个汉字3字节) ;5.0版本号以上,varchar(20),指的是20字符。不管存放的是数字、字母还是UTF8汉字(每一个汉字3字节),都能够存放20个。最大大小是65532字节 ;varchar(20)在Mysql4中最大也只是是20个字节,可是Mysql5依据编码不同,存储大小也不同。详细有下面规则:
a) 存储限制
varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时须要2个字节),因此最大长度不能超过65535。


b) 编码长度限制
字符类型若为gbk。每一个字符最多占2个字节,最大长度不能超过32766;
字符类型若为utf8,每一个字符最多占3个字节,最大长度不能超过21845。
若定义的时候超过上述限制,则varchar字段会被强行转为text类型。并产生warning。


对于c 语言

依据编译器了,不同的编译器,规定是不一样。

ANSI标准定义int是占2个字节,TC是按ANSI标准的,它的int是占2个字节的。

可是在VC里,一个int是占4个字节的



posted @ 2016-04-06 18:14  phlsheji  阅读(959)  评论(0编辑  收藏  举报