知行编程网知行编程网  2023-01-08 03:00 知行编程网 隐藏边栏  4 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python中如何将乱码解码的相关知识,包括python3中文乱码,以及python处理中文的字符编码这些编程知识,希望对大家有参考作用。

如何解码python中的乱码

中文编码问题一直是令程序员头疼的问题,而Python2中的字符编码就足以让新手抓狂。本文将尝试用通俗易懂的语言,让你彻底了解字符编码

以及Python2和3中的各种编码问题。

一、什么是字符编码。

要想彻底解决字符编码的问题,我们就得了解什么是字符编码。计算机基本上只能识别二进制的 0 和 1。可以说计算机中的任何数据

磁盘中的实际物理表示是0和1,拆开硬盘是看不到所谓的0和1的,看到的是光滑闪亮的磁盘。如果你

用足够大的放大镜,可以看到盘面有无数凹凸不平的元素。凹的代表0,凸的代表1,计算机就是这样表示二进制的。

式。

1.ASCII

现在我们面临第一个问题:如何让计算机理解人类的语言,比如英语?让我们以英语为例。在英文中,有英文字母(大小写)、标点符号、特殊

特殊符号。如果我们给这些字母和符号赋予固定的数字,然后将这些数字转换成二进制,那么计算机显然可以正确读取这些符号,同时通过

通过这些数字,计算机还可以将二进制转换成数字对应的字符,然后显示出来供人阅读。由此产生了我们最熟悉的ASCII码。 ASCII码使用指定的

7 位或 8 位二进制数来表示 128 或 256 个可能的字符。这样一来,在大多数情况下,英文和二进制的转换就变得容易多了。

2.GB2312

但是,虽然计算机是美国人发明的,但是全世界的人都在使用计算机。现在又出现了一个问题:如何让计算机看懂中文?这个麻烦,

与拉丁文不同,中文是由固定的字母组成的。 ASCII码显然没有办法解决这个问题。为解决这一问题,国家标准总局印发《通知》

《信息交换用汉字编码字符集》提出GB2312编码,解决汉字处理问题。 1995年,《汉字编码扩展规范》(GBK)颁布。 GBK 和

兼容国标GB 2312-1980对应的内码标准,在词汇层面支持ISO/IEC10646-1和GB 13000-1的所有中日韩(CJK)汉字

词,共20902词。这样,我们就解决了计算机处理汉字的问题。

3.Unicode

现在英文和中文的问题都解决了,但是新的问题又出现了。世界上有这么多国家,不仅有英语、汉语,还有阿拉伯语、西班牙语、日语、韩语等。

等待。是否可以为每种语言进行编码?基于这种情况,一种新的编码诞生了:Unicode。 Unicode 也称为Unicode 和Universal Code;它用于每种语言

为每个字符设置统一唯一的二进制编码,以满足跨语言、跨平台的文本转换和处理的要求。 Unicode 支持欧洲、非洲、中东、亚洲

大洲(包括统一标准的东亚象形文字和韩国表音文字)。这样,无论你使用的是英文还是中文,日文还是韩文,都会被包含在Unicode编码中。

并对应一个唯一的二进制代码。如此一来,皆大欢喜。只要大家都用Unicode编码,就不会有这种转码问题,任何字符都可以解析

了。

4.UTF-8

但是,由于Unicode包含的字符较多,可以想象其解析效率相比ASCII码和GB2312的速度是大大降低的,而且由于Unicode增加了一个

第一个高字节扩展了 ISO Latin-1 字符集。当这些高字节位为 0 时,低字节为 ISO Latin-1 字符。对可以用 ASCII 表示的字符使用 Unicode

效率不高,因为Unicode占用的空间是ASCII的两倍,高字节0对ASCII没用。为了解决这个问题,出现了一些中间网格。

字符集,它们被称为Universal Transformation Format,即UTF(Unicode Transformation Format)。而我们最常用的UTF-8就是其中一种转换格式

种类。这里不研究UTF-8是如何提高效率的,你只需要了解它们之间的关系即可。

总结:

1.为了处理英文字符,产生了ASCII码。

2.为了处理中文字符,产生了GB2312。

3.为了处理各国字符,产生了Unicode。

4.为了提高Unicode存储和传输性能,产生了UTF-8,它是Unicode的一种实现形式。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享