• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程技巧 > unicode utf-8 gb18030 gb2312 gbk各种编码对比

unicode utf-8 gb18030 gb2312 gbk各种编码对比

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-12

通过本文主要向大家介绍了gb18030 unicode,gb2312 gbk gb18030,gb2312和gb18030,gbk gb18030,gb18030等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
但是我这个的特点是追究原理,我在乎的事情都想弄明白,于是各个qq群依次发信息,没人理会。唉,郁闷。只好自己google it and teach myself 。下面是详细介绍。

还有对各方求助没有人理会,我有些个人想法。现在的人已经很少有人去深究理论了,人们的观念是得过且过,人们通常只是知道什么,不知道为什么。对编程来说,个人认为这是很悲哀的事情,也是非常危险的事情。我想可能这也是中国的IT落后于美国的原因,我希望中国的编程人员能够好好想想了。

下面的东西是从网上查到的

 Unicode 的编码和实现

大概来说,Unicode 编码系统可分为编码方式和实现方式两个层次。

 编码方式

Unicode 的编码方式与 ISO 10646 的通用字符集(Universal Character Set,UCS)概念相对应,目前实际应用的 Unicode 版本对应于 UCS-2,使用16位的编码空间。也就是每个字符占用2个字节。这样理论上一共最多可以表示 216 即 65536 个字符。基本满足各种语言的使用。实际上目前版本的 Unicode 尚未填充满这16位编码,保留了大量空间作为特殊使用或将来扩展。

上述16位 Unicode 字符构成基本多文种平面(Basic Multilingual Plane,简称 BMP)。最新(但未实际广泛使用)的 Unicode 版本定义了16个辅助平面,两者合起来至少需要占据21位的编码空间,比3字节略少。但事实上辅助平面字符仍然占用4字节编码空间,与 UCS-4 保持一致。未来版本会扩充到 ISO 10646-1 实现级别3,即涵盖 UCS-4 的所有字符。UCS-4 是一个更大的尚未填充完全的31位字符集,加上恒为0的首位,共需占据32位,即4字节。理论上最多能表示 231 个字符,完全可以涵盖一切语言所用的符号。

BMP 字符的 Unicode 编码表示为 U+hhhh,其中每个 h 代表一个十六进制数位。与 UCS-2 编码完全相同。对应的4字节 UCS-4 编码后两个字节一致,前两个字节的所有位均为0。

关于 Unicode 和 ISO 10646 及 UCS 的详细关系 ,请参看通用字符集。

实现方式

Unicode 的实现方式不同于编码方式。一个字符的 Unicode 编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对 Unicode 编码的实现方式有所不同。Unicode 的实现方式称为Unicode转换格式(Unicode Translation Format,简称为 UTF)。

例如,如果一个仅包含基本7位ASCII字符的 Unicode 文件,如果每个字符都使用2字节的原 Unicode 编码传输,其第一字节的8位始终为0。这就造成了比较大的浪费。对于这种情况,可以使用 UTF-8 编码,这是一种变长编码,它将基本7位ASCII字符仍用7位编码表示,占用一个字节(首位补0)。而遇到与其他 Unicode 字符混合的情况,将按一定算法转换,每个字符使用1-3个字节编码,并利用首位为0或1进行识别。这样对以7位ASCII字符为主的西文文档就大大节省了编码长度(具体方案参见UTF-8)。类似的,对未来会出现的需要4个字节的辅助平面字符和其他 UCS-4 扩充字符,2字节编码的 UTF-16 也需要通过一定的算法进行转换。

再如,如果直接使用与 Unicode 编码一致(仅限于 BMP 字符)的 UTF-16 编码,由于每个字符占用了两个字节,在Macintosh (Mac)机和PC机上,对字节顺序的理解是不一致的。这时同一字节流可能会被解释为不同内容,如某字符为十六进制编码4E59,按两个字节拆分为4E和59,在Mac上读取时是从低字节开始,那么在Mac OS会认为此4E59编码为594E,找到的字符为“奎”,而在Windows上从高字节开始读取,则编码为 U+4E59 的字符为“乙”。就是说在Windows下以UTF-16编码保存一个字符“乙”,在Mac OS里打开会显示成“奎”。此类情况说明UTF-16的编码顺序若不加以人为定义就可能发生混淆,于是在 UTF-16 编码实现方式中使用了大尾序(Big-Endian, 简写为UTF-16 BE)、小尾序(Little-Endian, 简写为UTF-16 LE)的概念,以及可附加的BOM(Byte Order Mark)解决方案,目前在PC机上的Windows系统和Linux系统对于UTF-16编码默认使用UTF-16 LE。(具体方案参见UTF-16)

此外 Unicode 的实现方式还包括 UTF-7、Punycode、CESU-8、

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • unicode utf-8 gb18030 gb2312 gbk各种编码对比

相关文章

  • 2017-05-12详解版本控制利器Git,SVN的异同以及适用范围
  • 2017-05-122013年CIO需要知道的八句格言
  • 2017-05-12Web 设计与开发者必须知道的 15 个站点
  • 2017-05-12安全校验Session验证码并避免绕开验证码攻击
  • 2017-05-12用户权限管理设计[图文说明]
  • 2017-05-12浏览器缓存知识小结及应用分析
  • 2017-05-12微信小程序学习之初探小程序
  • 2017-05-12简单谈谈Git中的回滚操作
  • 2017-08-23react-native在项目中使用半年后的感受
  • 2017-05-12IE 打开服务器下的MHT文件的实现方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 写给正在读计算机专业的同学 该如何学习
    • mac 切换系统默认的终端
    • 24种编程语言的Hello World程序
    • GitHub入门教程 手把手教你最简单的开源项目托管
    • 多种编程语言的常用按键和语法
    • asp.net php asp jsp 301重定向的代码(集合)
    • 简单谈谈GET和POST有什么区别
    • URL编码表一览(推荐收藏)
    • 编程语言里的静态、动态、强类型、弱类型等概念介绍
    • 科学知识:理解socket

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有