首页 > 其他分享 >字符编码 ASCII、GB、Unificode、UTF-8

字符编码 ASCII、GB、Unificode、UTF-8

时间:2022-12-29 18:33:13浏览次数:36  
标签:编码 UTF 字符 Unificode 汉字 GB ASCII

在和前端同事沟通对字符长度的判断方式时,发现有相当一部分同事对为什么使用UTF-8和为什么有ASCII、GB、Unificode、UTF-8这些字符编码缺乏足够的了解,因此整理了一份资料,供大家学习参考。  

为什么有字符编码?

计算机只能识别二进制数(0和1),人类使用计算机的时候,希望可以更符合人类的思维,因此产生了字符编码,即人类字符对应计算机二进制数的对照表。 说白了,方便人类使用计算机。   字符(character):字符是人类文明创造的符号,汉字、英文字母、标点符号、特殊符号都是字符。 字节(byte):计算机存储数据的基本单位。    

为什么会出现多种字符编码?

还是因为计算机的发展历史,随着计算机的普及,越来越多不同国家开始加入使用,语言不同,对应的字符编码也不同,因此出现了各种字符编码。 在互联网时代,这种字符编码的统一需求,迫使人类选择了Unicode(统一编码标准)   以中国为例: 中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字。 汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多。 中国是个多民族国家,各个民族几乎都有自己独立的语言系统,为了表示那些字符,继续把 GBK 编码扩充为 GB18030 编码。 每个国家都像中国一样,把自己的语言编码,于是出现了各种各样的编码,如果你不安装相应的编码,就无法解释相应编码想表达的内容。 终于,有个叫 ISO 的组织看不下去了。他们一起创造了一种编码 UNICODE ,这种编码非常大,大到可以容纳世界上任何一个文字和标志。 所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。 UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16,分别每次传输 8个位和 16个位。 于是就会有人产生疑问,UTF-8 既然能保存那么多文字、符号,为什么国内还有这么多使用 GBK 等编码的人?因为 UTF-8 等编码体积比较大,占电脑空间比较多,如果面向的使用人群绝大部分都是中国人,用 GBK 等编码也可以。  

ASCII

ASCII(American Standard Code for Information Interchange,美国信息互换标准代码) 是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言(计算机是美国发明的)。 ASCII 由电报码发展而来。 第一版标准发布于1963年[3][4],1967年经历了一次主要修订[5][6],最后一次更新则是在1986年,至今为止共定义了128个字符;  

GB

 

1. GB 2312

中华人民共和国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》, 通常简称GB(“国标”汉语拼音首字母),又称GB0,由中国国家标准总局于1980年发布,1981年5月1日实施。 GB 2312编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB/T 2312。 GB 2312标准共收录6763个汉字,基本满足了汉字的计算机处理需要,但偏僻字等没有收录。  

2. GBK

Guo-Biao Kuozhan 国家标准扩展码,GB是国标的汉语首拼音,K是扩展 由中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订  

3. GB 18030

由国家质量技术监督局于2000年3月17日发布和实施。该标准在GBK基础上增加了CJK统一汉字扩充A的汉字。 其对GB 2312-1980完全向后兼容。 本规格第一版 GB 18030-2000 本规格第二版为 GB 18030-2005 本规格第三版为 GB 18030-2022(目前最新)   GB 18030-2000,兼容Unicode 3.0中日韩统一表意文字(即扩展A区),共收27,533个汉字;2000年3月17日发布、2000年7月1日实施。 GB 18030-2005,更新至Unicode 3.1中日韩统一表意文字(即扩展B区),并刊载少数民族包括朝鲜文、蒙古文(包括满文、托忒文、锡伯文、阿礼嘎礼文)、德宏傣文、藏文、维吾尔文/哈萨克文/柯尔克兹文和彝文的文字。共有70,244个汉字;2005年11月8日发布、2006年5月1日实施。 GB 18030-2022,更新至 Unicode 11 中日韩统一表意文字(增补了基本区的 66 个字,并在扩展 A、B区的基础上增加了扩展 C、D、E、F 区),新增康熙部首,以及滇东北苗文、傈僳文、西双版纳新傣文、西双版纳老傣文、德宏傣文等少数民族文字以及蒙古文 BIRGA 符号,共收录汉字87,887个和汉字部首228个,比上一版增加录入了1.7万余个生僻汉字;于2022年7月19日发布、2023年8月1日实施。  

Unicode

Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “unicode“。 The Unicode Standard,其官方机构Unicode联盟所用的中文名称为统一码,又译作万国码、统一字元码、统一字符编码,是信息技术领域的业界标准。 其整理、编码了世界上大部分的文字系统,使得电脑能以通用划一的字符集来处理和显示文字,不但减轻在不同编码系统间切换和转换的困扰,更提供了一种跨平台的乱码问题解决方案。 从1991年10月开始至今,已发布了20几个版本,版本内容一般是增补字符。      

UTF-8

UTF-8(8-bit Unicode Transformation Format) unicode在很长一段时间内无法推广,直到互联网的出现,为解决unicode如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现了,顾名思义,UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位。 UTF-8就是在互联网上使用最广的一种unicode的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。 UTF-8最大的一个特点,就是它是一种变长的编码方式。 它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,当字符在ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,注意的是unicode一个中文字符占2个字节,而UTF-8一个中文字符占3个字节)。 从unicode到utf-8并不是直接的对应,而是要过一些算法和规则来转换。   UTF-8相比GB,占用的空间更大,且GB是中国标准,目前仍有使用。 UTF-8,UTF-16,UTF-32。它们遵循UNICODE字符集标准,但却改变了它的字节存储方案。      

总结

目前在开发过程中,大部分情况都是使用UTF-8字符编码,也就是1个汉字占3个字节的规则。 如果是国内开发,传输的汉字很多,为什么提高传输效率,可以考虑使用GB 18030编码规则。

 

     

标签:编码,UTF,字符,Unificode,汉字,GB,ASCII
From: https://www.cnblogs.com/yourstars/p/17013246.html

相关文章

  • 基于LightGBM算法实现数据挖掘!
    ​ Datawhale干货 作者:黄雨龙,中国科学技术大学对于回归问题,Datawhale已经梳理过​​完整的实践方案(可点击)​​,本文对多分类的数据挖掘问题做了完整的方案总结。一、赛题数......
  • SpringBoot - 内容协商机制
    1.内容协商机制根据客户端接收能力不同,SpringBoot返回不同媒体类型的数据比如:客户端Http请求Accept:application/xml则返回xml数据,客户端Http请求Accept:a......
  • SpringBoot 的属性配置文件
    0、概述本文内容会解答下面几个问题:1、SpringBoot默认配置文件的名称是什么?配置文件默认存放位置是什么?2、如何指定配置文件名称?如何指定配置文件存放位置?3、如何使用pro......
  • Q1 SpringBoot启动类如何作为配置类注册进Spring容器的?(ok)
    @SpringBootApplicationpublicclassHelloSpringBoot{publicstaticvoidmain(String[]args){SpringApplication.run(HelloSpringBoot.class,args);}}......
  • SpringBoot+MongoDB实现一个物流订单系统
    码字不易,点赞收藏,养成习惯!原创作者公众号:​​bigsai​​​,回复bigsai领取5G的PDF学习资源!共同进步。更多精彩期待与您分享!项目收录在​​​github​​​的​​MongoDB案例......
  • springboot mail 发送163邮件基础配置操作
    #发送邮件配置spring.mail.protocol=smtps#配置smtp服务器地址spring.mail.host=smtp.163.com#服务器的端口spring.mail.port=465#配置邮箱用户名spring.mail......
  • Springboot解锁部分跨域安全机制
    目录跨域定义为什么出现跨域流程解决方法方法一未解决办法全局配置过滤器拦截器使用环境跨域定义跨域是指在域名,端口,协议,三种任意一种不同,都会算作不同域,当想要访问的时......
  • springboot学习笔记整理
    springboot学习笔记整理目录​​1.1、SpringBoot简介​​​​1.2、系统要求:​​​​二、快速入门​​​​2.1、创建一个Maven工程​​​​2.2、pom文件引入依赖​​​​2.3......
  • SpringBoot系列之数据库初始化-datasource配置方式
    【DB系列】数据库初始化-datasource配置方式|一灰灰Blog在我们的日常业务开发过程中,如果有db的相关操作,通常我们是直接建立好对应的库表结构,并初始化对应的数据,即更......
  • springboot整合Jackson
    springboot整合JacksonJackson简介Jackson是一套适合java的数据处理工具,用于JSON格式数据的解析与生成,支持多种类型,是SpringMVC内置解析器。除了Jackson,常用的JSON解......