字符编码的历史总结,UTF8的编码规则,文件BOM的由来,笔记
来源:互联网 发布:单片机usb3.3v接哪里 编辑:程序博客网 时间:2024/05/15 06:37
要将文字用计算机存储起来,就必须将每个文字和一个对应的二进制码建立映射关系,下面就是文字编码的演变历史的简单总结,推荐原文 utf8编码原理详解 http://blog.csdn.net/baixiaoshi/article/details/40786503
历史如下:
(1)用0-127码段(一个字节的低位)表示英语的文字和常用符号,称为ANSI 的”Ascii”编码(American Standard Code for Information Interchange,美国信息互换标准代码);
(2)使用128-255码段(一个字节的高位)表示新增的其它字符,称为”扩展字符集”;
(3)中国人使用双字节(每个字节都规定在A1~FE范围[都大于127,若小于127则使用Ascii规则])表示7000多个简体字,称为”GB2312”,是对 ASCII 的中文扩展;
(4)中国人使用双字节(第一个字节大于127,第二个字节随意)拓展了中文的编码范畴,称为GBK编码(已经包含了GB2312的所有内容,外增加了20000多个简繁字体);
(5)中国人再次增加了少数民族字体,将GBK 扩成了 GB18030;
(6)中国人将双字节表示字符的规则称为DBSC(Double Byte Charecter Set 双字节字符集);
(7)很多国家都像中国一样制定了自己国家的文字编码;
(8) ISO (国际标谁化组织)废弃了地区编码方案,重新搞一个包括了地球上所有文化、所有字母和符号的编码,叫它”Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “UNICODE”。
(9)UNICODE统一用两个字节表示一个字符,称作“USC-2”;
(10)UNICODE还可以进行拓展,用四个字节表示一个字符,称作“USC-4”;
(11)互联网兴起,UNICODE为了适应网络传输,出现了面向传输的众多 UTF(UCS Transfer Format)标准,顾名思义,UTF8就是每次8个位传输数据,而UTF16就是每次16个位,只不过为了传输时的可靠性,从UNICODE到 UTF时并不是直接的对应,而是要过一些算法和规则来转换。
历史讲完了,我们再看一下UTF8的编码规则:
(1)将一个编码转为二进制,例如”汉”字的Unicode编码是0x6C49,二进制为:0110 1100 0100 1001;
(2)utf8的模板规则:1…10X..X 10XXXXXX 10XXXXXX,第一个字节的1的个数表示需要用到几个字节表示;
(3)因为是16位有效二进制数据,所以将其填充进模板就是:11100110 10110001 10001001;
文件BOM标志的由来:
为了识别文件的编码格式,以及判断大小端,USC就在文件开头添加了看不见的字符”ZERO WIDTH NO-BREAK SPACE”,俗称BOM,而各编码的BOM如下:
EF BB BF UTF-8FE FF UTF-16/UCS-2, little endianFF FE UTF-16/UCS-2, big endianFF FE 00 00 UTF-32/UCS-4, little endian.00 00 FE FF UTF-32/UCS-4, big-endian.
- 字符编码的历史总结,UTF8的编码规则,文件BOM的由来,笔记
- 编码由来的历史
- utf8编码文件的bom头
- 编码问题的历史由来
- [编码] 无BOM的UTF8
- 字符编码笔记:ASCII,Unicode和UTF-8的历史与由来
- php文件存储时的编码格式--utf8无BOM
- 其它编码的字符转utf8编码
- 字符编码的历史演变
- 字符编码的历史故事
- 字符编码的历史演变
- 三大编码的由来总结
- 从字符编码的发展历史理解ANSI、GB2312、Unicode、UTF8和UTF16区别
- utf8与gbk字符编码的转换
- 警告:编码 UTF8 的不可映射字符
- json_encode只支持UTF8编码的字符
- 多字节编码字符串与UTF8字符编码的转换
- 各种编码的bom
- Xcode8 环境变量设置 避免打出一堆信息
- C#编程实现阶乘算法
- CodeForces 722C. Destroying Array(逆向思维)
- ADC_RegularChannelConfig 的参数 Rank的含义
- C#——基于委托与事件的多线程通信(同样适用于非UI线程间通信)
- 字符编码的历史总结,UTF8的编码规则,文件BOM的由来,笔记
- Tracking-Learning-Detection原理分析
- Java解题-杭电OJ-1003题
- C#的36课的主要内容
- C语言入门级教程
- hdu 1010 回溯加奇偶性剪枝
- 多线程和并发
- ubuntu下查看和配置串口 转自http://shower.0fees.us
- Android中SQLite使用拓展