ANSI编码表:

DOS与ANSI分布图:


各种编码依次产生简介:

  1. ANSII码:英文码+英文常用图形,一个字符占用一个字节。
  2. GB2312(1980年,中国大陆,最早国标码):即中文ANSII码,中文码占用了0x80~0xFF,收录汉字6763个,汉字图形682个。ASII有94个区,每个区94位,每个区位放一个字符。一个字节只能表示256个字符,不够用,因此要用两个字节,最多能表示65536个字符。
  3. GBK(1995年,中国大陆,国标扩展码,基于GB2312):占用8140 ~FEFE。因为GB2312缺少生僻,增补汉字8160个字。
  4. GB18030(基于GBK的扩展码):本来觉得GBK已经够了,不知道哪个货拿出了《康熙字典》,悲剧,又不够了,继续扩展。
  5. 台湾有BIG5码,日韩也跟着添乱。中日韩台港文字出现在一起时,没招了……
  6. 终于,Unicode编码出来了,把地球上所有的语言的符号,都用统一的字符集来表示,一个编码真正做到了唯一。

但是Windows又出来裹乱,在UTF-8码上又加了BOM,导致Linux下不能识别。但是Python可以做兼容。

BOM:Byte Order Mark,字节顺序标记。会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。


Unicode里有几种方式:

  • UTF-16BE/LE:UTF-16 LE就是Windows模式的编码模式,用2个字节表示任意字符,注意:英文字符也占2个字节(变态不?),这种编码可以表示65536个字符,至于LE和BE,就是一个数值在内存/磁盘上的保存方式,比如一个编码0x8182,在磁盘上应该是0x81 0x82呢?还是0x82 0x81呢?就是高位是最先保存还是最后保存的问题,前者为BE(大端),后者为LE(小端)。
  • UTF-8:UTF-8则是网页比较流行的一种格式,用一个字节表示英文字符,用3个字节表示汉字,准确的说,UTF-8是用二进制编码的前缀,如果某个UTF-8的编码的第一个字节的最高二进制位是0,则这个编码占1字节,如果是110,则占2字节,如果是1110,则占3字节……

关于字符集(character set)和编码(encoding),比较容易有些混淆。

对于 ASCII、GB 2312、Big5、GBK、GB 18030 之类的遗留方案来说,基本上一个字符集方案只使用一种编码方案。

比如 ASCII 这部标准本身就直接规定了字符和字符编码的方式,所以既是字符集又是编码方案;而 GB 2312 只是一个区位码形式的字符集标准,不过实际上基本都用 EUC-CN 来编码,所以提及「GB 2312」时也说的是一个字符集和编码连锁的方案;GBK 和 GB 18030 等向后兼容于 GB 2312 的方案也类似。

在不同语言的系统中编码不同,这一部分在微软的术语中叫 code page。比如所谓 GBK 编码,实际上更多地被叫做 CP936。

[1] Windows 里说的「ANSI」其实是 Windows code pages,这个模式根据当前 locale 选定具体的编码,比如简中 locale 下是 GBK。把自己这些 code page 称作「ANSI」是 Windows 的臭毛病。在 ASCII 范围内它们应该是和 ASCII 一致的。
[2] 把带有 BOM 的小端序 UTF-16 称作「Unicode」也是 Windows 的臭毛病。Windows 从 Windows 2000 开始就已经支持 surrogate pair 了,所以已经是 UTF-16 了,「UCS-2」这个说法已经不合适了。UCS-2 只能编码 BMP 范围内的字符,从 1996 年起就在 Unicode/ISO 标准中被 UTF-16 取代了(UTF-16 通过蛋疼的 surrogate pair 来编码超出 BMP 的字符)。都十多年了,求求大家别再误称了……
[3] 把带 BOM 的 UTF-8 称作「UTF-8」又是 Windows 的臭毛病。如果忽略 BOM,那么在 ASCII 范围内与 ASCII 一致。另请参见:「带 BOM 的 UTF-8」和「无 BOM 的 UTF-8」有什么区别? http://www.zhihu.com/question/20167122


参考资料:

https://www.zhihu.com/question/20650946

https://www.zhihu.com/question/20167122

http://www.cnblogs.com/finallyliuyu/archive/2013/05/10/3071023.html

http://baike.baidu.com/link?url=3TllMqF5m4w_Z0R5j9XM5YgeJsinMAPqnuXIr6gCyUSDdWQ3orotY6qSH4fUMt4b5S9Xk5YMW2NzRTYS6vJ4x_nhvhNSQBZtjN4mDzvmgTq


ANSI、GBK、Unicode编码简介相关推荐

  1. Ansi与Unicode编码

    视频教程: Ansi与Unicode编码 大家在编程时经常遇到的数据类型: ● Ansi: char   代表一个字符  (CHAR) char *  代表一个字符串指针   (PCHAR    PS ...

  2. ANSI和UNICODE编码区别

    ASNI是ASCII的扩展,向下包含ASCII. 2.ASNI编码 对于ASCII字符仍以一个字节来表示,对于非ASCII字符则使用2字节来表示.并没有固定的ASNI编码,它跟"本地化&qu ...

  3. Ansi,UTF8,Unicode编码

    1.三种编码的回顾 Ansi字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个/0结尾,常用于txt文本文件.  Unicode字符串,每个字符(汉字.英文字母)都占2个字节:在VC++的世界里, ...

  4. 打包解包模块总结:VS2010中默认的编码是Unicode编码

    我把vc6.0上运行没有问题的代码挪到vs2010上,出现了一系列问题. 其根本原因是两种编译器默认编码不一样,vc6.0中默认的编码是(多字节)Ascii编码,VS2010中默认的编码是Unicod ...

  5. ASCII与Unicode编码消息写文件浅析

    [文章摘要] ASCII与Unicode是两种常见的字符编码.它们的表示方法不一样,因而在程序中就要区别处理. 本文基于作者的实际开发经验,对ASCII与Unicode两种字符编码消息的写文件过程进行 ...

  6. 字符编码简介 ANSI Unicode Unicode big endian UTF-8

    1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和 1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte) ...

  7. ASCII、ISO8859-1、GB2312、GBK、GB18030、BIG5、UNICODE、UTF-8、ANSI等字符集编码的讲解与特点

    世界是不断进步的,有了新需求就会产生新的事物.首先我们要知道在程序中经常遇到一些关于乱码的问题,而产生乱码的原因就是因为计算机直接存储字符时要把字符转为二进制,这其中不同的转换规则就对应不同的编码方式 ...

  8. ANSI, UTF-8, Unicode, GBK, GB2312 字符编码小结

    这两天碰见一个Bug,涉及到字符编码,索性研究了下,整理出来,以便今后查阅. ASCII码,0~127,128个,这个就不用多说了,他是计算机文明的基石.但是这里面只有英文字母,其他国家如何把本国的文 ...

  9. 计算机编码简介(ASCII、ANSI、EBCDIC、Unicode)

    1) ASCII(American Standard Code for Information Interchange,美国信息交换标准码)是使用最广的.使用ASCII码编码的文件称为ASCII文件. ...

最新文章

  1. Win10创意者更新刚发布 夜间模式就出BUG
  2. 卢卡斯定理及其卢卡斯定理的拓展
  3. IBM开发单原子存储技术 iPod能存上3万部电影?
  4. BOOST_VMD_ASSERT_IS_LIST相关的测试程序
  5. IDC:聚焦6+6,抓住数字化转型商机
  6. LeetCode MySQL 1747. 应该被禁止的Leetflex账户
  7. 任正非签发最新电邮:管理者的18种堕怠行为
  8. python正则表达式提取字符串的字母_Python正则表达式提取一部分字符串
  9. 积微论坛第一期 - 基于大数据整合预测土壤枯萎病的发生 (文稿分享)
  10. js学习笔记(新手向)
  11. 统计通话次数和时间的软件_通话时间统计器下载-通话时间统计 安卓版v2.6-PC6安卓网...
  12. New File(.)
  13. S/MIME电子邮件签名证书
  14. 【开发日记】马桶型号识别
  15. neutron理解总结(一)
  16. SIMD和SPMD的区别
  17. STM32F4主板硬件设计与接口
  18. 学会做笔记-子弹笔记学习概要四
  19. LET: Linguistic Knowledge Enhanced Graph Transformer for Chinese Short Text Matching学习笔记
  20. 许奔创新社-第26问:专家们创新时为何需要外行来指手画脚?

热门文章

  1. 2021-2027全球与中国电动汽车 (EV) 中的电容器市场现状及未来发展趋势
  2. Google Hangouts拆分成类Slack的Chat和视频通话工具Meet
  3. 推荐《Essential Linux Device Drivers》
  4. UI设计中三个重要的主题化区域,你知道吗?-优漫动游
  5. python规定的函数头部_Python基础手册23——函数的调用
  6. 命令行执行php脚本报错could not open input file
  7. 英国电信这样阻止骚扰电话 每周可阻止1500万个
  8. eclipse2022安装包下载及安装教程
  9. Vb汇编语言书籍推荐
  10. php yaf环境启动,yaf框架教程(3)- yaf框架环境配置