为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

字符编码详解 v2.2

2012-08-03 49页 pdf 990KB 41阅读

用户头像

is_889164

暂无简介

举报
字符编码详解 v2.2 字符编码详解 版本:v2.2 Crifan Li 摘要 本文主要介绍了字符编码的基础知识,以及常见的字符编码类型,比如ASCII,Unicode,UTF-8,ISO 8859等, 以及各种编码之间的关系,同时专门解释了中文字符相关的编码标准,包括GB2312,GBK,GB18030,也专门解 释了Windows系统中的Code Page 本文提供多种格式供: 在线阅读 HTML 1 HTMLs 2 PDF 3 CHM 4 TXT 5 RTF 6 下载(7zip压缩包) HTML 7 HTMLs 8 P...
字符编码详解 v2.2
字符编码详解 版本:v2.2 Crifan Li 摘要 本文主要介绍了字符编码的基础知识,以及常见的字符编码类型,比如ASCII,Unicode,UTF-8,ISO 8859等, 以及各种编码之间的关系,同时专门解释了中文字符相关的编码标准,包括GB2312,GBK,GB18030,也专门解 释了Windows系统中的Code Page 本文提供多种格式供: 在线阅读 HTML 1 HTMLs 2 PDF 3 CHM 4 TXT 5 RTF 6 下载(7zip压缩包) HTML 7 HTMLs 8 PDF 9 CHM 10 TXT 11 RTF 12 HTML版本的在线地址为: http://www.crifan.com/files/doc/docbook/char_encoding/release/html/char_encoding.html 修订历史 修订 1.0 2011-11-02 crl 1. 添加了编码相关背景知识介绍 2. 添加了ASCII和EASCII编码介绍 3. 添加了ISO/IEC 8859相关的编码和各种单字节编码的关系 4. 添加了Unicode和ISO 10646的解释 5. 添加了UTF-8和Unicode的区别和联系 修订 2.2 2012-07-10 crl 1. 通过Docbook发布 2. 合并了原先在zhcn_charset中的内容 3. 详细解释了Code Page 4. 详细解释了ANSI编码 5. 解释BOM 1 http://www.crifan.com/files/doc/docbook/char_encoding/release/html/char_encoding.html 2 http://www.crifan.com/files/doc/docbook/char_encoding/release/htmls/char_encoding.html 3 http://www.crifan.com/files/doc/docbook/char_encoding/release/pdf/char_encoding.pdf 4 http://www.crifan.com/files/doc/docbook/char_encoding/release/chm/char_encoding.chm 5 http://www.crifan.com/files/doc/docbook/char_encoding/release/txt/char_encoding.txt 6 http://www.crifan.com/files/doc/docbook/char_encoding/release/rtf/char_encoding.rtf 7 http://www.crifan.com/files/doc/docbook/char_encoding/release/html/char_encoding.html.7z 8 http://www.crifan.com/files/doc/docbook/char_encoding/release/htmls/char_encoding.html.7z 9 http://www.crifan.com/files/doc/docbook/char_encoding/release/pdf/char_encoding.pdf.7z 10 http://www.crifan.com/files/doc/docbook/char_encoding/release/chm/char_encoding.chm.7z 11 http://www.crifan.com/files/doc/docbook/char_encoding/release/txt/char_encoding.txt.7z 12 http://www.crifan.com/files/doc/docbook/char_encoding/release/rtf/char_encoding.rtf.7z 字符编码详解: Crifan Li 版本:v2.2 出版日期 2012-07-10 版权 © 2012 Crifan, http://crifan.com 本文章遵从:署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5)13 13 http://www.crifan.com/files/doc/docbook/soft_dev_basic/release/html/soft_dev_basic.html#cc_by_nc iii 目录 缩略词 ...................................................................................................................................... 1 正文之前 ................................................................................................................................... ii 1. 目的 ............................................................................................................................. ii 2. 本文内容 ...................................................................................................................... ii 3. 声明 ............................................................................................................................. ii 1. 字符编码相关的背景知识 ....................................................................................................... 3 1.1. 拉丁字母 .................................................................................................................... 3 1.1.1. 我们的目标 ...................................................................................................... 3 1.2. 什么是字符编码 .......................................................................................................... 3 2. 字符编码标准 ........................................................................................................................ 5 2.1. 只支持基本的拉丁字符的字符编码:ASCII .................................................................... 5 2.1.1. ASCII的由来 .................................................................................................... 5 2.1.2. ASCII编码规则 ................................................................................................. 5 2.1.2.1. ASCII字符集中的功能/控制字符 ............................................................. 6 2.1.2.1.1. 什么是Function Code功能码或 Function Character功能字符 ....... 6 2.1.2.1.2. ASCII中的Function/Control Code功能字符的详细含义 ................ 7 2.1.2.1.2.1. 0 – NUL – NULl 字符/空字符 ........................................... 7 2.1.2.1.2.2. 1 – SOH – Start Of Heading 标题开始 ............................ 8 2.1.2.1.2.3. 2 – STX,3 – ETX ........................................................... 8 2.1.2.1.2.4. 4 – EOT – End Of Transmission 传输结束 ........................ 9 2.1.2.1.2.5. 5 – ENQ – ENQuiry 请求 ................................................ 9 2.1.2.1.2.6. 6 – ACK – ACKnowledgment 回应/响应 .......................... 9 2.1.2.1.2.7. 7 – BEL – [audible] BELl ................................................. 9 2.1.2.1.2.8. 8 – BS – BackSpace 退格键 ............................................ 9 2.1.2.1.2.9. 9 – HT – Horizontal Tab 水平制表符 ............................... 9 2.1.2.1.2.10. 10 – LF – Line Feed 换行 ............................................ 10 2.1.2.1.2.11. 11 – VT – Vertical Tab 垂直制表符 ............................... 10 2.1.2.1.2.12. 12 – FF – Form Feed 换页 .......................................... 10 2.1.2.1.2.13. 13 – CR – Carriage return 机器的滑动部分/底座 返回 - > 回车 ........................................................................................... 10 2.1.2.1.2.14. 14 – SO,15 – SI ....................................................... 11 2.1.2.1.2.15. 16 – DLE – Data Link Escape 数据链路转义 .................. 11 2.1.2.1.2.16. 17 – DC1 – Device Control 1 / XON – Transmission on ................................................................................................. 11 2.1.2.1.2.17. 18 – DC2 – Device Control 2 ..................................... 11 2.1.2.1.2.18. 19 – DC3 – Device Control 3 / XOFF – Transmission off 传输中断 ................................................................................... 11 2.1.2.1.2.19. 20 – DC4 – Device Control 4 ..................................... 11 2.1.2.1.2.20. 21 – NAK – Negative AcKnowledgment 负面响应-> 无响应, 非正常响应 ......................................................................... 11 2.1.2.1.2.21. 22 – SYN – SYNchronous idle .................................... 12 2.1.2.1.2.22. 23 – ETB – End of Transmission Block 块传输中止 ....... 12 2.1.2.1.2.23. 24 – CAN – CANcel 取消 ............................................ 12 2.1.2.1.2.24. 25 – EM – End of Medium 已到介质末端,介质存储已 满 .................................................................................................. 12 2.1.2.1.2.25. 26 – SUB – SUBstitute character替补/替换 .................. 12 2.1.2.1.2.26. 27 – ESC – ESCape 逃离/取消 ..................................... 12 2.1.2.1.2.27. 28 – FS – File Separator 文件分隔符 ............................ 12 2.1.2.1.2.28. 29 – GS – Group Separator分组符 .............................. 12 2.1.2.1.2.29. 30 – RS – Record Separator记录分隔符 ....................... 12 2.1.2.1.2.30. 31 – US – Unit Separator 单元分隔符 .......................... 12 2.1.2.1.2.31. 32 – SP – White SPace 空格键 .................................... 13 2.1.2.1.2.32. 127 – DEL – DELete 删除 ............................................ 13 2.1.2.1.3. 各种字符的标准的读法/叫法 ...................................................... 13 2.1.3. ISO 646 ....................................................................................................... 14 字符编码详解 iv 2.2. 支持多种衍生拉丁字母的字符编码:EASCII和ISO 8859 .............................................. 14 2.2.1. EASCII .......................................................................................................... 14 2.2.2. ISO 8859 ..................................................................................................... 14 2.2.2.1. ISO/IEC 8859出现的背景 .................................................................... 14 2.2.2.2. ISO/IEC 8859的编码规则 .................................................................... 14 2.2.2.3. ISO/IEC 8859的特点 ........................................................................... 15 2.2.2.4. ISO/IEC 6429 .................................................................................... 16 2.2.2.5. ISO 8859和ISO-8859的区别和联系 ..................................................... 16 2.2.2.5.1. 原先的ISO 8859-1和我们常说的ISO 8859-1 .............................. 17 2.3. 各种单字节编码标准的关系 ....................................................................................... 18 2.4. 支持世界上几乎所有字符的字符编码:Unicode .......................................................... 19 2.4.1. Unicode和ISO 10646的关系 ......................................................................... 19 2.4.1.1. ISO 10646=UCS ................................................................................ 19 2.4.1.2. Unicode 和ISO 10646的联系 .............................................................. 20 2.4.1.3. Unicode和ISO 10646的区别 ............................................................... 20 2.4.2. Unicode编码规则 .......................................................................................... 21 2.4.3. Unicode字符编码所对应的存储和交换标准:UTF-8, UTF-16, UTF-32 ............... 21 2.4.3.1. UTF-8 ................................................................................................ 22 2.4.3.2. Unicode与UTF-8之间的转换 ............................................................... 22 2.4.3.2.1. 关于UTF-8的BOM:“EF BB BF” ............................................ 24 2.5. 代码页Code Page .................................................................................................... 24 2.5.1. 什么是代码页(Code Page) ......................................................................... 24 2.5.2. Windows中的Code Page .............................................................................. 24 2.5.2.1. Windows中的Code Page分类:ANSI和OEM ....................................... 25 2.5.2.1.1. Windows的ANSI Code Page表 ................................................ 25 2.5.2.1.2. Windows的OEM Code Page表 ................................................ 25 2.5.2.1.3. 一些常见的Code Page表 .......................................................... 25 2.5.2.2. 所有的Code Page表 ........................................................................... 26 2.6. ANSI字符编码 .......................................................................................................... 26 2.6.1. ANSI是啥 ...................................................................................................... 26 2.6.2. ANSI编码规则 ............................................................................................... 26 2.6.3. ANSI (Windows 1252)编码表 ....................................................................... 26 2.6.4. ANSI编码与ANSI的关系 ................................................................................. 27 2.6.5. ANSI字符编码和Windows 1252 .................................................................... 27 2.6.5.1. Windows 1252和ISO 8859-1之间的区别 ............................................. 27 2.6.6. 为何"ANSI编码"(在Windows中)被称为"本地编码" ....................................... 27 2.7. BOM ....................................................................................................................... 28 2.7.1. BOM是什么 .................................................................................................. 28 2.7.2. 为何需要BOM ............................................................................................... 28 2.7.3. BOM表 ......................................................................................................... 29 2.8. 中文字符编码标准 .................................................................................................... 29 2.8.1. GB2312,CP936,GBK,GB18030,GB13000 .............................................. 29 2.8.1.1. GB2312 ............................................................................................. 29 2.8.1.2. GB13000 ........................................................................................... 29 2.8.1.3. GBK ................................................................................................... 29 2.8.1.4. GB18030 ........................................................................................... 29 2.8.2. 各种中文字符编码标准的关系 ......................................................................... 30 2.9. 字符存储(交换)标准 .............................................................................................. 31 2.10. 字形和你所看到的字符的关系 .................................................................................. 32 参考书目 ................................................................................................................................ 33 A. 编码相关的 .................................................................................................................. 35 A.1. ASCII编码表(0-127) ................................................................................................. 35 A.2. ISO/IEC 8859编码标准中的15种字符集 ..................................................................... 36 A.3. Code Page表格 ....................................................................................................... 36 A.3.1. 常见的ANSI和OEM的Code Page的表格 ......................................................... 36 A.3.1.1. ANSI Code Page表 ........................................................................... 36 A.3.1.2. OEM Code Page表 ............................................................................ 37 A.3.1.3. ANSI和OEM共有的Code Page表 ........................................................ 37 字符编码详解 v A.3.1.4. 其他一些常见的Code Page表 .............................................................. 37 A.3.2. 所有的Code Page相关的表格 ........................................................................ 38 A.4. 不同编码所用的BOM ............................................................................................... 42 vi 插图 2.1. ISO/IEC 8859的15个字符集的部分比较 ............................................................................. 15 2.2. ISO/IEC 8859-1字符集表 ................................................................................................. 17 2.3. Unicode中的各种平面划分 ............................................................................................... 21 2.4. Notepad中的各种编码 ..................................................................................................... 23 2.5. 汉字“宋”的不同字体 ...................................................................................................... 32 vii 表格清单 2.1. ASCII中的控制字符 ............................................................................................................. 6 2.2. 各种单字节编码标准之间的关系 ......................................................................................... 18 2.3. ISO/IEC 10646与Unicode的版本对应关系 ......................................................................... 20 2.4. Unicode与UTF-8之间的编码映射关系 ............................................................................... 22 2.5. 中文字符相关编码标准 ...................................................................................................... 30 2.6. 字符(存储)交换标准 ...................................................................................................... 31 A.1. ASCII编码表(0-127) ......................................................................................................... 35 A.2. ISO/IEC 8859编码标准中的15种字符集 ............................................................................. 36 A.3. ANSI的SBCS Code Page ................................................................................................. 36 A.4. OEM的Code Page .......................................................................................................... 37 A.5. ANSI和OEM共有的DBCS Code Page ............................................................................... 37 A.6. 一些常见的Code Page ..................................................................................................... 37 A.7. 微软的代码页标识符(Code Page Identifiers) ..................................................................... 38 A.8. 不同编码所用的BOM ....................................................................................................... 42 1 缩略词 ASCII (ASCII) American Standard Code for Information Interchange 美国信息交换标准代码 BMP (BMP) Basic Multilingual Plane 基本多文种平面 EBCDIC (EBCDIC) Extended Binary Coded Decimal Interchange Code 扩展二进制编码十进制交换码 IANA (IANA) Internet Assigned Numbers Authority 互联网号码分配局 ISO/IEC (ISO/IEC) International Organization for Standardization / International Electrotechnical Commission 国际标准化组织和国际电工委员会 UCS (UCS) Universal Character Set 通用字符集 UTF (UTF) Unicode Transformation Format Unicode转换格式 ii 正文之前 1. 目的 本文旨在讲清楚字符编码的概念和来龙去脉,和常见标准之间的关系和区别。 2. 本文内容 个人对于字符编码的理解,最开始主要是看了阮一峰的这篇文章: 【转】字符编码笔记:ASCII,Unicode和UTF-8 1 然后自己花了更多的时间,搜集整理了和字符编码的更详细的知识,整理出来,以供大家参考。 其中也摘录了该贴的部分内容。 3. 声明 任何问题,意见,建议等,都欢迎一起探讨:admin (at) crifan.com。 1 http://www.crifan.com/switch_character_encoding_notes_ascii_unicode_and_utf-8/ 3 第 1 章 字符编码相关的背景知识 1.1. 拉丁字母 1.1.1. 我们的目标 在介绍计算机的字符编码知识前,先来说说这个拉丁字母,估计也会有人和我一样,对于拉丁字母和英 文字母以及汉语拼音中的字母的关系,不是很清楚。 拉丁字母,也叫罗马字母,是当今世界上使用最广的字母系统。 拉丁字母,或者说基本的拉丁字母,就是你所常见的到的ABCD等26个英文字母。 原先是欧洲那边使用的,后来由于欧洲殖民主义,导致后来的美洲等地,也是用的这套字母体系。 而其他有些地方,比如越南等,本来有自己的文字语言的,结果受西方文化的影响和由于基督教的传 播,也用拉丁字母了。 所以总的说,现在欧洲多数国家,美洲,澳洲,非洲的多数国家,都是用的拉丁字母,即你所常见的英 文字母,也是拉丁字母。而中国的汉语拼音,也是用的这个拉丁字母。 其中,欧洲很多国家,是对已有的26个基本的拉丁字母,加上连字,变音字符,弄出个衍生拉丁字 母,但是还是属于拉丁字母。 说了这么多,就是要让你知道,后面内容所提到的英文字母,其来源于拉丁字母,而且我们汉语的汉语 拼音,也是拉丁字母。 即: • 基本的拉丁字母 = 26个英文字母 = 汉语中的汉语拼音 • 衍生的拉丁字母 = 从基本的26个英文字母,加上连字,变音等字符而衍生出来的拉丁字母 = 很多西 欧国家的字母 (每个国家都不太一样) 1.2. 什么是字符编码 计算机中存放的都是0和1的二进制值。8个位对应一个字节,常用16进制来表示。 而我们普通用户所希望看到的是,计算机把其所存储的对应的16进制的数值,转化为对应的字符,包 括英文和中文等其他语言的字符,然后输出到屏幕上。 而所谓编码,就是,定义了一套规则,去指定,哪些数值,对应着哪些字符。 举个最简单的例子,常见65=0x41对应的是大写字母A,97=0x61对应的是小写字母a,而这套数值和 字母之间的映射关系,说白了,就是一套规则,就叫做字符编码,即我们常说的ASCII编码。 那有人会问了,如果我定义了一套规则,假如叫张三编码,然后故意去把ASCII中的映射关系改变,比 如97=0x61对应的是大写字母A,65=0x41对应的是小写字母a,等等,可不可以?答案是,完全可 以,不过这套规则,首先没有得到所有计算机业界的一致认同,所以,除了你自己用,其他人不原意使 用,那么也就是没了存在的价值了。 换句话说,当初ASCII之所以这么定义这套规则,就是这么定义了而已,然后大家都接受这个标准,然 后就都用这个定义了。 即,如果当初定义为0x41代表的是小写字母a,而不是大写字母A,那么现在你所看到的,就是小写字 母a就是对应着计算机中存储的0x41,而不是之前的0x61了。 所以,简单的说就是: 字符编码相关的背景知识 4 所谓字符编码,就是定义了一套规则,指定了计算机中存放的这么多值中的哪个值,对应了电脑屏幕显 示出来的哪个字母。 5 第 2 章 字符编码标准 2.1. 只支持基本的拉丁字符的字符编码:ASCII 2.1.1. ASCII的由来 计算机刚出现的时候,虽然是美国人发明的,但是也要面对一个问题,即如何将对应的计算机中的数 值,转化为对应的字母,而显示出来,即采用什么样的规则,而当时,各个厂家或公司都有自己的做 法,也就是说,编码规则没有统一。 但是相对来说,得到大家认可的有,IBM的EBCDIC和此处要谈的ASCII。 其中EBCDIC现在基本没人再用,而大家统一都用ASCII了。 ASCII,即American Standard Code for Information Interchange,美国信息交换标准代码。 单独看名字,就是知道,这字符编码是设计给美国人用的。 那是因为,计算机是美国人所发明和使用的,所以计算机的早期,所设计编码标准,自然需要先为英文 字符来设计和考虑,所以此最早的字符编码ASCII可以显示常见的英文字符,也可以这么说,也只能显 示基本的英文字符。 由于ASCII编码中,不包括其他欧洲的很多国家的衍生的拉丁字母的那些字符,更不包含亚洲,比如中 国的中文字符,因此才会有后面所提到的各种其他字符集,为的就是可以让计算机显示出自己国家的字 符。 2.1.2. ASCII编码规则 ASCII的编码规则,由于最初只是为英文字母所考虑的,而英文只有26个字母,以及加上其他大小写字 母,常见的字符,常见数字等,所有的加起来,也就几十个,而一个字节8位中前7位的理论上可以表 示27=128个字符,所以对于设计出来的编码规则来说,只需要用一个字节来表示,就足够了。 即ASCII编码规则中规定,用单个字节共8位来表示字符,其中最高位为0,其他7位所对于的每一个 值,映射到某个特定的字符,这样就形成了ASCII编码。 ASCII共包含了27=128个字符。 其中包括33个不可显示的字符和95个可显示的字符。 而对于ASCII编码规则,简单说就是: 7位的字符编码,即每个字节的最高位第8位为0,其余7位的某个值对应着某个字符。 ASCII字符集共27=128个字符 = 33个控制字符 + 95个可见字符。 >ASCII中的可显示的字符和不可显示字符 ASCII中可显示的字符,也叫可打印printable字符; 而ASCII中的值为0 – 31的那些字符,叫做不可显示的字符,也叫不可见字符,不可打印 (non-printable)字符,由于其字符的作用是起一定的控制作用,所以常称为控制字符 (control character),即不同的字符实现不同的功能,因此又称为功能字符(function code,function character)。 即ASCII字符集中: 不可见字符 =不可打印(non-printable)字符 字符编码标准 6 =控制字符(control character) =功能字符(function code,function character) 对于ASCII中的控制字符,都包括哪些,以及每个字符的详细含义,第 2.1.2.1 节 “ASCII字 符集中的功能/控制字符”中会有详细介绍。 2.1.2.1. ASCII字符集中的功能/控制字符 2.1.2.1.1. 什么是Function Code功能码或 Function Character功能字符 ASCII字符集,大家都知道吧,最基本的包含了128个字符。其中前32个,0-31,即0x00-0x1F,都是 不可见字符。这些字符,就叫做控制字符。 这些字符没法打印出来,但是每个字符,都对应着一个特殊的控制功能的字符,简称功能字符或功能码 Function Code。 简言之:ASCII中前32个字符,统称为Function Code功能字符。 此外,由于ASCII中的127对应的是Delete,也是不可见的,所以,此处根据笔者的理解,也可以归为 Function Code。 此类字符,对应不同的“功能”,起到一定的“控制作用”,所以,称为控制字符。 关于每个控制字符的控制功能缩写,参见表 2.1 “ASCII中的控制字符” 表 2.1. ASCII中的控制字符 十进制 十六进制 控制字符 转义字 符 说明 Ctrl + 下 列字母 0 00 NUL \0 Null character(空字符) @ 1 01 SOH Start of Header(标题开始) A 2 02 STX Start of Text(正文开始) B 3 03 ETX End of Text(正文结束) C 4 04
/
本文档为【字符编码详解 v2.2】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索