`

认识常见的字符集编码

阅读更多

 

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
分享到:
评论

相关推荐

    最新MySQL8入门到精通视频教程.txt

    1.1.认识MySQL.mp4 2.1.认识MySQL.size.mp4 3.2.安装配置MySQL.mp4 4.2.安装配置MySQL.size.mp4 5.3.MySQL登录与退出命令.mp4 6.3.MySQL登录与退出命令.size.mp4 7.4.使用MySQL之常见符号....13.7.认识字符集.mp4 14.7

    HTML与javascript常碰到的编码问题第1/2页

    有两个基本概念需要说明,charset 和 character encoding: charset ,字符集,也就是某个符号和某个数字映射关系的一个表,也就是它决定了107 是koubei 的 ‘a’,21475 是口碑的“口”,不同的表有不同的映射关系...

    思库教育PHP零基础培训+进阶课程+PHP项目开发实战 21G PHP零基础学习视频教程.txt

    │ │ ├[思库教育]第五集 二进制原理,字符编码原理.wmv │ │ ├【思库教育】第二集 html设计思想和基本格式.mp4 │ │ ├【思库教育】第一集 网页介绍,环境与编辑器.wmv │ │ └第四集 排版标签.wmv │ ├ │ ...

    HTML开发王

    14.1.2 使用html文档字符集和选择字符编码 14.1.3 指定字符编码 14.1.4 字符编码的优先级 14.1.5 在html文档中使用字符引用 14.2 指定文档内容的语言(lang属性) 14.2.1 语言代码 14.2.2 语言代码的继承 14.2.3 ...

    FreeBarcode

    \STARTBabcdef\CODEC123456,意思是:以以字符集B(\STARTB)开始,编码abcdef,转入字符集C(\CODEC) 编码123456。 所以,128条码是比较复杂的,而现在大多数条码软件只支持128A\B\C,且不支持带控制符号的 128A\B\...

    条形码生成FreeBarcode

    \STARTBabcdef\CODEC123456,意思是:以以字符集B(\STARTB)开始,编码abcdef,转入字符集C(\CODEC) 编码123456。 所以,128条码是比较复杂的,而现在大多数条码软件只支持128A\B\C,且不支持带控制符号的 128A\B\...

    Python-电信用户流失预测

    数据预测前一系列处理,先进行特征工程处理,结合皮尔逊相关系数,把无用特征进行剔除,完善字符编码格式。再处理类别不平衡的问题(正负样本数相差较多,易导致数据倾斜或不准确)。 四、模型使用与评估 使用机器...

    JAVA面试题最全集

    编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...

    IOI国家集训队论文集1999-2019

    张一飞 -《由感性认识到理性认识——透析一类搏弈游戏的解答过程》 周文超 -《树结构在程序设计中的运用》 ## 2003 方 奇 -《染色法和构造法在棋盘上的应用》 高正宇 -《答案只有一个——浅谈问答式交互问题...

    Java开发详解.zip

    032004_【第20章:Java新IO】_字符集笔记.pdf 032005_【第20章:Java新IO】_Selector笔记.pdf 042101_【课程讲解】_附录:Eclipse开发工具笔记.pdf 050101_〖开发实例〗_Java开发实例讲解(人员管理)笔记.pdf

    .NET之美:.NET关键技术深入分析

    10.4.1 ASCIl、UTF8、Unicode编码下的中英文字符大小 10.4.2文本边界问题 10.5异步传输字符串 10.5.1 服务端的实现 10.5.2客户端的实现 10.5.3程序测试 10.6文件传输 10.6.1订立协议 10.6.2协议处理类的实现...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    基本信息 作者: 臧萌 出版社:清华大学出版社 ISBN:9787302217831 ...12.2.5 接口——让类集多重类型于一身 344 12.2.6 简化recordTransport()方法 347 12.3 再探接口 349 12.3.1 重温上节中的程序 349...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    基本信息 作者: 臧萌 出版社:清华大学出版社 ISBN:9787302217831 ...12.2.5 接口——让类集多重类型于一身 344 12.2.6 简化recordTransport()方法 347 12.3 再探接口 349 12.3.1 重温上节中的程序 349...

    delphi11(实际上是delphi10.5)补丁

    4、C++ RTL的改进包括在Delphi类中使用make_shared和make_unique,对Delphi字符串的string_view支持,以及Delphi/C++字符串的简单转换。 六、LSP 1、使用Visual Studio Code来编辑Delphi源代码,并具有完整的代码...

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    本书是讲解c++语言程序设计的优秀教程。全书围绕c++语言的结构来组织,开始章节介绍编程的普通概念,接下来详细介绍C++hh的...附录3 ASCII字符集 608 附录4 一些库函数 609 附录5 旧的和新的头文件 614 参考资料 615

    中职计算机应用基础教案设计.doc

    "集播放音视频资料等手段," "应用领 "了解计算机在现代社会的工作与生 "让学生在活动中了解计算机" "域 "活中的各类应用; "的广泛应用 " " "了解数据与信息的概念及数据在计 " " " "算机中的处理过程 " " "计算机...

    Excel函数活用范例大辞典(全新版).何先军.2015-2(带书签高清文字版).pdf

    也可以将本书作为学习Excel 函数的参考书或习题集,以通过对本书中案例的演练来掌握常用的函数。 本书主要适用于希望快速掌握Excel函数相关知识,并使用公式和函数解决办公中实际问题的用户,适用于不同年龄段的办公...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    5.4.5 实现字符编码过滤器 5.5 实战检验 5.5.1 通过Servlet实现录入用户信息 5.5.2 应用过滤器实现网页计数器 5.6 疑难解惑 5.6.1 访问Servlet出现404错误 5.6.2 修改Servlet无效 5.6.3 创建过滤器并没有实现过滤...

Global site tag (gtag.js) - Google Analytics