网淘巴来吧,欢迎您!

返回首页 微信
微信
手机版
手机版

Python字符串使用哪种编码格式?

2021-05-16 新闻来源:网淘巴 围观:630
''

字符串使用哪种编码格式?
概述
什么是字符编码?
Python使用哪种字符编码?
概述
这里先举一个例子。古代打仗,击鼓为号、鸣金收兵,即把要传达给士兵的命令对应为公认的其他形式,这就和编码有相似之处。

举个栗子:

以发布进攻命令[文]为例,相比用嗓[章]子喊,敲鼓发出[来]的声音传播的更[自]远,并且士兵听[网]到后也不会引起[淘]歧义,因此长官[巴]下达进攻命令后[文],传令员就将此[章]命令转化为对应[来]的鼓声,这个转[自]化的过程称为编[网]码;

由于士兵都接受[淘]过训练,听到鼓[巴]声后,他们可以[文]将其转化为对应[章]的进攻命令,这[来]个转化的过程称[自]为解码。

需要说明的是,[网]此例只是形象地[淘]描述了编码和解[巴]码的原理,真实[文]的编码和解码过[章]程比这要复杂的[来]多。

了解了编码的含[自]义之后,接下来[网]再介绍一下字符[淘]编码。

什么是字符编码?
我们知道,计算机是以二进制的形式来存储数据的,即它只认识 0 和 1 两个数字。

20 世纪 60 年代,是计算机[巴]发展的早期,这[文]时美国是计算机[章]领域的老大,它[来]制定了一套编码[自]标准,解决了 128 个英文字符与二[网]进制之间的对应[淘]关系,被称为 ASCII 字符编码(简称[巴] ASCII 码)。

ASCII 码,全称为美国[文]信息交换标准代[章]码,是基于拉丁[来]字母的一套字符[自]编码,主要用于[网]显示现代英语,[淘]因为万维网的出[巴]现,使得 ASCII 码广为使用,其[文]直到 2007 年 12 月才逐渐被 Unicode[章] 取代。

虽然英语用 128 个字符编码已经[来]够用,但计算机[自]不仅仅用于英语[网],如果想表示其[淘]他语言,128[巴] 个符号显然不够[文]用,

所以很多其他国[章]家都在 ASCII 的基础上发明了[来]很多别的编码,[自]

例如包含了汉语[网]简体中文格式的[淘] GB2312 编码格式(使用[巴] 2 个字节表示一个[文]汉字)。

也正是由于出现[章]了很多种编码格[来]式,导致了&l[自]dquo;文件[网]显示乱码&rd[淘]quo;的情况[巴]

比如说,发送邮[文]件时,如果发信[章]人和收信人使用[来]的编码格式不一[自]样,则收信人很[网]可能看到乱码的[淘]邮件。基于这个[巴]原因,Unic[文]ode 字符集应运而生[章]

Unicode[来] 字符集又称万国[自]码、国际码、统[网]一码等。

从名字就可以看[淘]出来,它是以统[巴]一符号为目标的[文]字符集。

Unicode[章] 对世界上大部分[来]的文字系统进行[自]了整理、编码,[网]使得电脑可以用[淘]更简单的方式来[巴]呈现和处理文字[文]

注意,在实际使[章]用时,人们常常[来]混淆字符集和字[自]符编码这两个概[网]念,我认为它们[淘]是不同的:

字符集定义了字[巴]符和二进制的对[文]应关系,为每个[章]字符分配了唯一[来]的编号。

可以将字符集理[自]解成一个很大的[网]表格,它列出了[淘]所有字符和二进[巴]制的对应关系,[文]计算机显示文字[章]或者存储文字,[来]就是一个查表的[自]过程;

而字符编码规定[网]了如何将字符的[淘]编号存储到计算[巴]机中,要知道,[文]有些字符编码([章]如 GB2312 和 GBK)规定,[来]不同字符在存储[自]时所占用的字节[网]数是不一样的,[淘]

因此为了区分一[巴]个字符到底使用[文]了几个字节,就[章]不能将字符的编[来]号直接存储到计[自]算机中,字符编[网]号在存储之前必[淘]须要经过转换,[巴]在读取时还要再[文]逆向转换一次,[章]这套转换方案就[来]叫做字符编码。[自]

Unicode[网] 字符集可以使用[淘]的编码方案有三[巴]种,分别是:

UTF-8:一[文]种变长的编码方[章]案,使用 1~6 个字节来存储;[来]

UTF-32:[自]一种固定长度的[网]编码方案,不管[淘]字符编号大小,[巴]始终使用 4 个字节来存储;[文]

UTF-16:[章]介于 UTF-8 和 UTF-32 之间,使用 2 个或者 4 个字节来存储,[来]长度既固定又可[自]变。

其中,UTF-[网]8 是目前使用最广[淘]的一种 Unicode[巴]字符集的实现方[文]式,可以说它几[章]乎已经一统江湖[来]了。

Python使用哪种字符编码?
了解了什么是编码,以及什么是字符编码之后,最后解决“Python 使用哪种字符编码?”这个问题。

Python 3.x 中,字符串采用[自]的是 Unicode[网] 字符集,可以用[淘]如下代码来查看[巴]当前环境的编码[文]格式:

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
1
2
3
同时,在 Python 3.x 中也可以用 ord() 和 chr() 函数实现字符和编码数字之间的转换,例如:

>>> ord('Q')
81
>>> chr(81)
'Q'
>>> ord("网")
32593
>>> chr(32593)
'网'
1
2
3
4
5
6
7
8
由此可以知道,在 Unicode 字符集中,字符‘Q’对应的编码数字为 81,而中文‘网’对应的编码数字为 32593。

值得一提的是,虽然 Python 默认采用 UTF-8 编码,但它也提供了 encode() 方法,可以轻松实现将 Unicode 编码格式的字符串转化为其它编码格式。有关 encode() 方法的用法,可阅读《Python encode()和decode()方法》 一节。
————————————————

原文链接:https://blog.csdn.net/qq_32727095/article/details/118108165

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏

本文链接:https://www.wtao8.com/post/74.html 转载需授权!

分享到:

相关文章

龙年
大发