UTF-8、GBK编码的区别
2016-07-13 09:50
316 查看
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。
是用以解决国际上字符的一种多字节编码,它对英文使用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。
相关文章推荐
- 经验分享:Xcode 创建.a和framework静态库
- 微信公众号开发教程[006]-PHP使用CURL详解
- 如何通过HTTPS方式访问webservice
- 三张图看遍Linux 性能监控、测试、优化工具
- hdu 2391 filthy rich
- 在leangoo里列表一般怎么设置?
- Core Data修改了Data Model文件后报错
- Drawerlayout,ActionBarDrawetoggle,NavigationView使用
- JAVA反射机制
- Nandflash镜像尾部不应填充0xFF
- C# string bytes互转
- iOS书摘之Objective-C编程之道 iOS设计模式解析
- iOS开发支付集成之银联支付
- 大学两年来学到的东西和五月到六月学到的东西
- Java随机数的生成
- HelloWorld
- CodeForces 570B Simple Game
- 多态和虚函数详解
- UIGraphicsBeginImageContext系列知识
- IOS Dev Intro - GCD Series 01