`

认识常见的字符集编码

阅读更多

 

1.ASCII字符集与编码

    美国信息互换标准代码. 每一个ASCII码与8位二进制数对应.ASCII用一个字节来表示一个字符,最多能够扩展256种字符.

    常用英文字符,相应的十进制数是0~127.其最高位是0.


 

 

    另有128个扩展ASCII码,由一些图形和画线符号组成.,最高位都是1.


 

建议记住 A 的ASCII码为 65,0 的ASCII码为 48,大小写字母之间差为32.


 

 

2.ISO8859-1字符集与编码

    ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF.

    其中0x00-0x7F之间和ASCII编码一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号.

    ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言,希腊语,泰语,阿拉伯语,希伯来语对应的文字符号.欧元符号出现的比较晚,没有被收录在ISO-8859-1中.

    因为ISO-8859-1编码使用了单字节的所有空间,在支持ISO-8859-1的系统中传输和存储其他任何编码的字节流都不会被抛弃.即把其他任何编码的字节流当作ISO-8859-1编码看待都没有问题.这是个很重要的,MySQL数据库默认编码是Latin1就是利用了这个特性.

    备注:ISO-8859-1有时也称为Latin-1。

 

 

 

3.GB2312字符集与编码

      GB2312,中华人民共和国国家标准汉字信息交换用编码.全称<<信息交换用汉字编码字符集--基本集>>,简称国标码.共收入汉字6763个和非汉字图形字符682个.由国家标准总局发布,标准号是GB 2312-1980.1981年5月1日实施.

      GB2312是几乎所有中文系统和国际化软件都支持的中文字符集.GB2312通行于中国大陆和新加坡.

GB2312中,两个字符表示一个汉字,分别称为高位和低位.为了与ASCII编码区分开.中文字符的每一个字节的最高位都是1.

 

    GB 2312中对所收汉字进行了“分区”处理,每区含有94个汉字符号.这种表示方式也称为区位码。

01-09区为特殊符号.

16-55区为一级汉字,按拼音排序.

56-87区为二级汉字,按部首/笔画排序.

10-15区及88-94区则未有编码.

 

    例:"啊"是GB2312之中的第一个汉字,它的区位码是1601.

 

 

 

4.GBK字符集与编码

      为了对更多字符和符号进行编码.1995年12月,前电子部科技质量司和国际技术监督局标准化司颁布了GBK编码规范,即汉字内码扩展规范,其中K为扩展的汉语拼音中"扩"字的拼音声母.英文全称Chinese Internal Code Specification.

      GBK编码标准兼容GB2312,共收录汉字21003个,符号883个,并提供1894个造字码位,简繁体字融于一库.

      GBK是对GB2312-80的扩展,也就是CP936字码表(Code Page 936)的扩展(之前CP936和GB 2312-80一模一样)。

      windows操作系统的默认字符集为GBK.

备注:GBK只是规范,不是国家标准.

 

 

 

5.Unicode字符集

      Unicode(统一码,万国码,单一码).Unicode定义了足以代表人类所有可读字符的字符集.

      Unicode是计算机科学中的一种标准.它由Unicode 组织(The Unicode Consortium,一个非营利性的机构所运作)推出并主导Unicode发展.

 

UTF-8编码

      UTF-8是UNICODE的一种变长字符编码.由Ken Thompson于1992年创建.现在已经标准化为RFC 3629.UTF-8用1到6个字节编码UNICODE字符.

 

      如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节.如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节.用4个或6个字节去编码一个UNICODE字符可能太多了,但很少会遇到那样的UNICODE字符. 

 

UTF-8编码的优点

  UTF-8编码可以通过屏蔽位和移位操作快速读写.字符串比较时strcmp()和wcscmp()的返回结果相同,因此使排序变得更加容易.字节FF和FE在UTF-8编码中永远不会出现,因此他们可以用来表明UTF-16或UTF-32文本(见BOM) .UTF-8 是字节顺序无关的.它的字节顺序在所有系统中都是一样的,因此它实际上并不需要BOM。

 

UTF-8编码的缺点

  无法从UNICODE字符数判断出UTF-8文本的字节数.因为UTF-8是一种变长编码它需要用2个字节编码那些用扩展ASCII字符集只需1个字节的字符 ISO Latin-1 是UNICODE的子集,但不是UTF-8的子集.8位字符的UTF-8编码会被email网关过滤,因为internet信息最初设计为7位ASCII码.因此产生了UTF-7编码. UTF-8 在它的表示中使用值100xxxxx的几率超过50%, 而现存的实现如ISO 2022, 4873, 6429, 和8859系统,会把它错认为是C1 控制码。因此产生了UTF-7.5编码。

 

 

修正的UTF-8

      UTF-8保存使用标准UTF-8和修正的UTF-8有两点不同:

  修正的UTF-8中,null字符编码成2个字节(1100000010000000)而不是标准的1个字节(00000000),这样作可以保证编码后的字符串中不会嵌入null字符.因此如果在类C语言中处理字符串,文本不会在第一个null字符时截断(C字符串以null结尾).

  在标准UTF-8编码中,超出基本多语言范围(BMP-BasicMultilingualPlain)的字符被编码为4字节格式,但是在修正的UTF-8编码中,他们由代理编码对(surrogatepairs)表示,然后这些代理编码对在序列中分别重新编码.结果标准UTF-8编码中需要4个字节的字符,在修正后的UTF-8编码中将需要6个字节.

 

备注:

Unicode是字符集.UTF-8,UTF-16,UTF-32是编码规则.

java使用UTF-16表示内部文本,并支持用于字符串串行化的非标准的修正UTF-8编码.

 

 

补充:

(1)ANSI编码

 

    这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码.

    在简体中文系统下,ANSI 编码代表 GB2312 编码.在日文操作系统下,ANSI 编码代表 JIS 编码.

    不同 ANSI 编码之间互不兼容,当信息在国际间流交时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。

 

 

 

 

  • 大小: 146.5 KB
  • 大小: 126 KB
分享到:
评论

相关推荐

    3乱码的前世今生 —— 字符集和比较规则(2).md

    UTF-8是一种广泛使用并且能够兼容ASCII字符集的编码方式,对于常见的英文字符使用1字节编码,对于中文、日文等使用2至4字节编码。 了解这些基本概念后,我们就可以更好地理解乱码的产生原因。乱码通常发生在字符集...

    字节、字符、编码的相关知识

    **1.3 字符集与编码** 字符集定义了一组特定的字符,而编码则规定了如何将这些字符转换为字节序列。不同的字符集如GB2312、GBK、JIS等,不仅规定了包含哪些字符,还规定了如何存储这些字符。Unicode字符集则是国际...

    维吾尔文unicode编码表

    通过这份维吾尔文Unicode编码表,我们不仅能够了解到维吾尔文的基本字母构成及其与阿拉伯文的关联,还能进一步认识到维吾尔文在数字世界中的标准化表示方法,这对于跨文化交流、信息技术开发等方面具有重要意义。

    尚硅谷_宋红康_计算机字符编码2

    9. **OEM字符集**:随着计算机的发展,ASCII字符集不能满足非英语国家的需求,OEM(Original Equipment Manufacturer)字符集衍生出来,这些字符集根据不同的地区和制造商进行了扩展,以支持当地语言的字符。...

    常用编码详解.docx

    本文对各种常见编码的转换算法进行了详细的介绍,涵盖了通用字符集(UCS)、Unicode编码、UTF-8编码、UTF-7编码、GB2312编码、URL解码等多种编码方式。 一、通用字符集(UCS) 通用字符集(UCS)是ISO/IEC 10646-1...

    中英文字符编码查询_V1.1.zip

    GBK是在GB2312基础上扩展的,可以支持更多的汉字和其他中文字符,而Unicode是一个全球性的字符集,包含了几乎世界上所有语言的字符,UTF-8是Unicode的一种实现方式,使用1到4个字节来表示一个字符。 “中英文字符...

    易语言unicode编码到GBK

    4. 错误处理:编码转换过程中可能会遇到无法映射的字符,因为GBK的字符集比Unicode小。易语言通常会提供错误处理机制,例如替换未知字符、忽略或者抛出异常。 5. 源码实现:在提供的“易语言unicode编码到GBK源码”...

    文件编码转换工具

    编码转换工具可以帮助用户理解这些文本,尤其是在遇到非标准编码或不常见的字符集时。 5. **gbk2utf**:这个可能是程序或脚本的文件名,表明它的功能是将GBK编码转换为UTF-8编码。在实际应用中,这样的工具可以批量...

    免费_java中文乱码字符集解决大全

    为了解决这些问题,需要对Java中文乱码的编码转换过程有一个清晰的认识。在Java程序的生命周期中,涉及编码转换的几个主要步骤包括: 1. 编程人员在特定操作系统上使用编辑器编写源程序文件,并以.java扩展名保存。...

    对UTF8编码的初步认识.rar_UTF8_utf

    另一方面,“www.pudn.com.txt”可能是一个包含示例文本的文件,这些文本可能是使用UTF8编码的,用于展示不同字符集(如拉丁、希腊、汉字等)在UTF8编码下的表现。通过观察这个文件,我们可以直观地看到UTF8如何编码...

    C#中字符串编码处理

    总之,理解和正确处理字符串编码在C#编程中至关重要,这涉及到字符集的选择、转换和解码过程,以及在不同环境和系统间的数据交换。在实际开发中,必须对各种编码标准和它们的差异有清晰的认识,以便正确处理和显示...

    浅谈文字编码和Unicode.pdf

    - **代码页**: 代码页是一种特定的字符编码方案,用于定义一组特定字符集的编码方式。例如,代码页936对应简体中文的GBK编码,而代码页950则对应繁体中文的Big5编码。 - **ANSI代码页**: 在Windows中,ANSI代码页...

    哈夫曼编码/译码器 C++数据结构课程设计

    1. **哈夫曼树的建立**:首先,需要从用户输入中获取字符集及其相应的频率(权值)。这些信息用于构建哈夫曼树。通过创建一个包含字符和权值的优先队列(通常用最小堆实现),每次取出两个权值最小的节点合并成一个...

    浅谈文字编码和Unicode

    本文通过对文字编码和Unicode的基础概念、常见编码类型、编码到Unicode的映射过程以及代码页等相关知识点的介绍,旨在帮助初学者建立起对文字编码系统的全面认识。通过理解这些概念和技术细节,开发者和用户能够更加...

    易语言JS实现编码转换源码

    JavaScript是一种广泛应用于Web开发的脚本语言,它在处理字符串编码时扮演着重要角色,尤其是在处理不同字符集和编码格式之间转换时。 编码转换是编程中常见且重要的任务,尤其在网络通信和数据存储中。JavaScript...

    【编程】编码互转工具

    4. Unicode编码:Unicode是一个广泛接受的字符集,目标是为世界上所有的字符提供一个唯一的数字表示,无论语言或地区。它包含了ASCII和ANSI编码的所有字符,还涵盖了其他许多语言的字符,如汉字。Unicode有多种编码...

    中文和编码方式的相互转换

    同样需要指定源编码、源字符串、缓冲区大小和目标字符集等参数。 3. Unicode到UTF-8:MFC没有直接提供转换函数,但可以使用Windows API函数`WideCharToMultiByte()`,设置目标编码为CP_UTF8(65001),进行转换。 ...

    哈弗曼编码实例的实验报告

    通过对比分析,我们验证了哈夫曼编码作为一种高效的数据压缩技术,在处理具有不同频率特性的字符集时,能够显著减少存储空间,提升传输效率。 通过此次实验,不仅掌握了哈夫曼编码的基本原理和实现方法,还深刻认识...

    哈夫曼编码实验报告.docx

    - 唯一性:对于同一个字符集和对应的出现频率,所构建的哈夫曼树虽然可能不唯一,但编码后的结果是一致的。 #### 四、哈夫曼编码的应用场景 哈夫曼编码因其高效的数据压缩性能,在多个领域都有广泛应用: - **...

Global site tag (gtag.js) - Google Analytics