字符编码笔记汇总:ASCII、GBXXXX、Unicode、UTF-8等

本文详细介绍了字符编码的基本概念,包括ASCII、GB2312、Unicode和UTF-8等编码方式。内容涵盖了字符集和字符编码的定义,以及乱码的原因和解决办法。此外,还讨论了Python中处理字符编码的相关内容,强调了解码和编码一致性的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符编码笔记汇总:ASCII、GBXXXX、Unicode、UTF-8等

版权声明:本文系个人经多处资料学习、吸收、整理而得,如需转载,请注明出处:作者名+链接。

内容说明:本系列内容大致包括基本概念(字符集、字符编码)、常用字符集和字符编码(ASCII、GB系列、UniCode等)、乱码原因及解决方案、Python内字符编码的相关处理。 (含大小端说明)

关键词:字符编码,ASCII、Unicode、utf-8、乱码与解决办法、Python

1. 基本概念

首先,说下编码解码:计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如’a’用什么表示,称为”编码”;反之,将存储在计算机中的二进制数解析显示出来,称为”解码”。在解码过程中,若使用了同编码方式不同的编码规则饿,则可能导致解析错误或者乱码。

其次理解字符集字符编码

  • 字符集:是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。一般来说,不同的字符集有不同的对应字符编码规则,因此也常会看到有人说:字符集就规定了某个文字对应的二进制数字存放方式(编码)和某串二进制数值代表了哪个文字(解码)的转换关系。

  • 字符编码:是一套法则,在符号集合(人们表达信息的方式)与数字系统(计算机存储和处理信息的方式)之间建立对应关系,也就是说字符编码就是将字符转换为计算机可以接受用0、1表达的数。

2. 常用字符集和字符编码

常见字符集有:ASCII字符集、GB2312字符集、BIG5字符集、Unicode字符集等,每种字符集有对应的一种或多种编码方式。

  • ASCII字符集&ASCII编码
    ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本EASCII则可以勉强显示其他西欧语言。它是现今最通用的单字节编码系统(但是有被Unicode追上的迹象),并等同于国际标准ISO/IEC 646。
    ASCII字符集:主要包括控制字符(回车键、退格、换行键等)、可显示字符(英文大小写字符、阿拉伯数字和西文符号),共128个字符。
    ASCII编码:将ASCII字符集转换为计算机可以接受的数字系统的数的规则。使用7位(bits)表示一个字符,共128字符;但是7位编码的字符集只能支持128个字符,为了表示更多的欧洲常用字符对ASCII进行了扩展,ASCII扩展字符集使用8位(bits)表示一个字符,共256字符。编码表可参见[1].
    缺点:只能显示26个基本拉丁字母、阿拉伯数目字和英式标点符号,因此只能用于显示现代美国英语(而且在处理英语当中的外来词如naïve、café、élite等等时,所有重音符号都不得不去掉,即使这样做会违反拼写规则)。而EASCII虽然解决了部份西欧语言的显示问题,但对更多其他语言依然无能为力。因此现在的苹果电脑已经抛弃ASCII而转用Unicode。

  • 简体中文字符集&gbXXXX编码
    由于ASCII码只支持英文,为了显示中文,必须设计一套编码规则用于将汉字转换为计算机可以接受的数字系统的数。
    为此,天朝专家把那些127号之后的奇异符号们(即EASCII)取消掉,规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。在这些编码里,还把数学符号、罗马希腊的 字母、日文的假名们都编进去了,连在ASCII里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的”全角”字符,而原来在127号以下的那些就叫”半角”字符了。
    上述编码规则就是GB2312,其对应的是中国国家标准简体中文字符集,1981年5月1日实施。中国大陆几乎所有的中文系统和国际化的软件都支持GB2312。GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。但对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来gbk编码(可对应到gb18030字符集《信息技术 中文编码字符集》)的出现。
    gb18030特点

    • 采用多字节编码,每个字可以由1个、2个或4个字节组成。
    • 编码空间庞大,最多可定义161万字符
    • 支持中国国内少数民族的文字,无需动用造字区
    • 收录范围包含繁体汉子以及日韩汉子
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值