GB2312\GBK\ASCII\ASNI\UNICODE\UTF-8等等,这些字眼非常常见,同时带来许多的问题。

  本文只是从理解的角度,说明以上内容的不同含义从而达到区分其用法的目的是够了的。至于实现方式,可以查阅各自的详细标准官方文档。

  先解释一个概念,什么是字符集,嗯,不解释了,我弄一个吧:{写,程,序,是,一,件,开,心,的,事} = {1,2,3,4,5,6,7,8,9,10},从今以后,1就代表写了,以此类推,呐这就是字符集了。

  计算机科学起源美国,语言以字母拼组而成,为了表示字母、数字、符号(可打印符号以及控制符号)等, 制订了第一份字符集,就是ASCII,字符集的码表只有8bit,穷举只能表示256个字符。

  

  计算机迅速发展,不同国家语言不同,为了使用计算机,只能发展自己的字符集,因为是后来的字符集,是完全兼容ASCII字符集的,中国的是GB2312,使用2bytes表示一个汉字。后面陆续发现GB2312穷举的内容不够了,依照时间顺序,以此又搞出了兼容GB2312的GBK、又搞出了兼容GBK的GB18030。

  Big5字符集和上面的差不多,只不过是繁体版本的,不过这个是一个单独分支,与上面的不存在兼容关系。

  其实上面是有问题的,微软搞一个操作系统,全球卖,不同国家不同字符集不同的实现方法很烦的(注意这里的实现方法),跳出两个大神,一个是ISO,说:全球统一用一套把,我来弄,叫UCS,又出来一个,是语言软件公司联盟,说:全球一套是对的,不顾我来弄吧,叫UNICODE。后来过了一段时间,全球两套字符集确实没必要,ISO和软件联盟商量了下,互相兼容了(就是一套东西了),所以很多时候,你可以理解UCS与UNICODE说的是同一个东西。

  那么好了,微软相对开心了,弄了一个codepage的东西,做了一个UNICODE与不同国家的东西映射,不同国家的自己的字符集统一叫做了ANSI,也就是说,中国大陆是ANSI可以是GBK,台湾的可以是Big5。

  上面仅仅是字符集,可以装订成书大家传阅,怎么放到电脑中啊。这就到了编码实现了。UTF-8、UCS-2等,说的就是这个。

    这里有一个比较重要的地方,字符集中的字符的编号与字符集编码实现中的,也就是计算机中所存储的编号是不同的。从字符集的编号到字符集编码实现的编号是需要经过一定的转换和运算的。UTF-8是指UNICODE的字符集编码,这是一个变长编码,也就是说有些字符编码是一个字节,如:a,有些字符是两个或三个字节,至于其具体的编码运算规则,请自行查阅UTF-8的相关文档。 UTF-16\UTF-32分别指16bit编码和32bit编码,应该是非变长的。USC-2是统一全部使用2bytes编码,用的不多。

  接下来还有最后一个问题BOM,这个是由于数据在万维网中传输引起的,不同的架构计算机的存在大端小端的不同,为了能够不同计算机在万维网下协同工作,所以在文件头部加入几个不可见字符,以标识是属于大端或小端。

  具体对应关系如下:

    EF BB BF    UTF-8
    FE FF     UTF-16/UCS-2, little endian
    FF FE     UTF-16/UCS-2, big endian
    FF FE 00 00  UTF-32/UCS-4, little endian.
    00 00 FE FF  UTF-32/UCS-4, big-endian.

下面是两个草图,供参考:

    

  

  

  

  

  

  

转载于:https://www.cnblogs.com/wildfox/p/5809480.html

字符集和字符集编码详解相关推荐

  1. java所使用的字符集是_Java常用字符集编码详解

    Java常用字符集编码详解 Web开发的时候经常会遇到一些字符编码的错误,如页面乱码等问题,所以有必要需对字符编码有所了解,以下是Ricki收集的一些资料(可能不是很全,但希望对你有所帮助) Java ...

  2. mysql干货——数据库字符集和校对规则详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.什么是字符集 字符是多个文字和符号的总称,包括各个国家的文字.标点符号.图形符号.数字等.字符集多个字符的集合. 字符集合 ...

  3. 11、MySQL字符集和校对规则详解

    在讲解字符集和校对规则之前,我们先来简单了解一下字符.字符集和字符编码. 字符(Character)是计算机中字母.数字.符号的统称,一个字符可以是一个中文汉字.一个英文字母.一个阿拉伯数字.一个标点 ...

  4. ASCII 、GB2312、GBK、GB18030、unicode、UTF-8字符集编码详解

    ASCII码表在线查询: http://www.weste.net/tools/ASCII.asp ASCII字符集编码 ASCII码是7位编码,字符在计算机中以其ASCII码方式表示,其长度为1个字 ...

  5. ASCII 、GB2312、GBK、GB18030、unicode、UTF-8字符集编码详解(转载)

    ASCII字符集编码 ASCII码是7位编码,字符在计算机中以其ASCII码方式表示,其长度为1个字节, 有符号字符型数.编码范围是0x00-0x7F(0~127).ASCII字符集包括英文字母.阿拉 ...

  6. MySQL字符集和排序规则详解

    本篇博客主要记录mysql当中关于创建数据库时候选择:字符集.排序规则等相关知识.通过示例直观的看出其真正作用. 目录 1.前言 2.mysql字符集 2.排序规则 2.1.排序规则作用 2.2.排序 ...

  7. MySQL数据库——MySQL字符集和校对规则详解

    在讲解字符集和校对规则之前,我们先来简单了解一下字符.字符集和字符编码. 字符(Character)是计算机中字母.数字.符号的统称,一个字符可以是一个中文汉字.一个英文字母.一个阿拉伯数字.一个标点 ...

  8. 字符集编码详解【ASCII 、GB2312、GBK、GB18030、unicode、UTF-8】(转)

    ASCII字符集编码 ASCII码是7位编码,编码范围是0x00-0x7F.ASCII字符集包括英文字母.阿拉伯数字和标点符号等字符.其中0x00-0x20和0x7F共33个控制字符. 只支持ASCI ...

  9. ASCII 、GB2312、GBK、GB18030、unicode、UTF-8字符集编码详解 1

    ASCII字符集编码     ASCII码是7位编码,编码范围是0x00-0x7F.ASCII字符集包括英文字母.阿拉伯数字和标点符号等字符.其中0x00-0x20和0x7F共33个控制字符.     ...

  10. python 中文编码类型 gb2312 gb180_常用字符集编码详解:ASCII 、GB2312、GBK、GB18030、UTF-8、unicode...

    http://blog.csdn.net/zhoubl668/article/details/6914018 ASCII ASCII码是7位编码,编码范围是0x00-0x7F.ASCII字符集包括英文 ...

最新文章

  1. PHP设置二维码中间为logo
  2. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.0 版新增系统参数管理
  3. 企业如何进行数字化转型?
  4. idea配置连接oracle数据库的pom文件中添加什么?
  5. rtosucos和linux区别,为什么我们需要uCos?带你透彻理解RTOS
  6. SHELL 002 -- ps命令常用方法
  7. 计算机组装与维护5416答案,沈阳工业大学计算机科学与技术专业2016年在重庆理科高考录取最低分数线...
  8. Linux命令行下播放音乐SOX
  9. 全球智能猫眼行业调研及趋势分析报告
  10. java比较常用的缓存技术_常用缓存技术
  11. 织梦采集侠自动采集伪原创发布设置
  12. 正则表达式之断言及常用正则表达式
  13. Linux安装wget
  14. WHOIS查询检索,域名信息查询工具软件
  15. 小米官网html二级导航怎么做,小米路由器做二级路由器怎么设置?
  16. Android7.0以上多系统语言的国际化适配
  17. java 开发平台 普元_普元开发平台好不好?
  18. 软件项目中引用头文件的几种方法及要点
  19. 自学python经验_我学Python的经验,Python学习经验分享
  20. 合工大机器人足球仿真robocup2D球队代码实验七实验验收

热门文章

  1. Java使用腾讯企业邮箱发邮件的例子
  2. 笔记本电脑光驱位加固态硬盘,重装系统,UEFI启动,解决电脑开机慢的问题
  3. 牛客 送分啦-QAQ
  4. bugly android升级,android 新版本升级示例源码(bugly)
  5. webpack压缩图片
  6. 玩转华为ENSP模拟器系列 | 通过STelnet登录其他设备举例(DSA)
  7. 柯里化 curry
  8. 如何用电影摄影来破解大脑
  9. codeforces 645 D Robot Rapping Results Report 【树形dp】
  10. 程序员,这样做你的面试成功率将达到 90%