首页 置换 选车 估价 问答 生活 经销商 车管所 汽车资讯 汽车销量 车牌查询 今日油价 天气预报
您的位置: 首页 > 生活 > 科技 > python中将字符转换为编码值(Python字符编码转换)
python中将字符转换为编码值(Python字符编码转换)
更新时间:2024-07-05 12:19:11

python中将字符转换为编码值(Python字符编码转换)1

关于字符的编码,这是一个及其重要的知识点,这个点不搞清楚,那改bug有时候你会晕的。我们下面就以Python为例来说说字符编码的问题。

我们常见的编码格式有ASCII、gbk、GB2312、UTF-8、GB18030和Unicode等等。

说明一下:

  • ASCII 只能表示英文和部分字符,占用1个字节

那问题来了,在我们中国,怎么表示中文呢?于是就有了下面的三种编码。

  • GB2312 中文编码,好像只能存7000多个汉字

  • GB18030 中文编码,好像能存2万多个汉字

  • GBK 中文编码,基本上表示所有的汉字,windows系统默认的其实就是这个编码。

那问题继续来了,那每个国家都有自己的一套编码,那不是买了他国的设备,显示不出本国的字符了?

于是乎,就有了ISO标准的万国码-------Unicode。

  • Unicode :就是所谓的万国码。他能显示全球各个地方的字符了。它1个中文字符或者一个英文字符占2字节。

要说这个Unicode好啊 ,都能存储了,可是问题又来了,我本身英文的字符我是用ASCII编码,只占用8bit,现在用你的Unicode要占用16bit。这不是扯了蛋了。使用英文字符的就不愿意了,要知道内存还是很贵的。这就出现了UTF-8。

  • UTF-8: 在Unicode的基础上出现了这种编码,UTF-8被称作可变长编码。可以认为是Unicode的一个扩展集,英文字符占用1个字节,中文占用3个字节。

有了这么多种编码,那么编码的转换就是一个很必然的问题了。

字符编码与转换

看一个很重要的图:

我们举个例子,假如现在要把韩国的一个软件运行在我们的机器上,假如这个软件使用的是x编码,我们知道不经过处理肯定是跑不起来的,这就需要一个转码的过程,这个过程是:x编码------>Unicode------>GBK。必须要有这个过程。x编码------>Unicode 这个过程一般称为解码(decode),Unicode------>GBK这个过程称为编码(encode)。反之,我们也需要这样一个过程。总之,转码的过程Unicode成了一个桥梁,转化成Unicode的过程一般称为decode。

在我们的python3中所有的编码都为utf-8。在python2中为ASCII。可使用该指令查询:

python中将字符转换为编码值(Python字符编码转换)2

我们以python3x为例来说明一下:

python中将字符转换为编码值(Python字符编码转换)3

这是我的pycharm的界面,注意右下角的编码格式为:UTF-8,这个表示我的这个程序使用的是UTF-8编码。

而在左侧输出栏里面的UTF-8表示的python3使用的默认编码是UTF-8。

python中将字符转换为编码值(Python字符编码转换)4

我们把pycharm右下角的编码格式改为GBK。

python中将字符转换为编码值(Python字符编码转换)5

写个简单的字符串,同志们报错了啊。这是为啥呢?我们先改一下再看:

python中将字符转换为编码值(Python字符编码转换)6

第一张图为啥报错了呢?其实也很容易理解了,python3默认UTF-8编码,你现在把你的python文件设置为GDK编码,那肯定报错啊。但是我要是在程序的前面,

  • # -*-coding:gbk -*-

我们声明一下,我们使用gbk,程序就好了。这也是为啥我们在python2的时候开头总有这个设置文件编码的语句了。

那么问题来了,这个s是什么编码呢?其实这个s还是unicode编码。因为我们使用的是python3的解释器,默认的还是unicode或者叫做utf-8。这个# -*-coding:gbk -*-只是设置了你的文件的编码格式。它和运行的时候毛的关系都没有。这也是此时你不能再decode的原因了,我本身就是unicode,肯定就不能decode了。

  • 我们来对s这个字符串编码一下:以gbk的格式啊

python中将字符转换为编码值(Python字符编码转换)7

是不是又有疑问了?gbk编码竟然显示不出来这个字符串了,什么鬼?

其实这个是一个以byte类型编码gbk,显示不了这个字符串了。这个也是python3才有的。

在普及一下:Python 3对字符串和二进制数据流做了明确的区分。Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。

  • 以utf-8的格式编码一下s

python中将字符转换为编码值(Python字符编码转换)8

依旧还是显示不出来字符串,显示的是以utf-8编码的“我爱你”这个字符串。

  • 以gb2312的格式编码一下s

python中将字符转换为编码值(Python字符编码转换)9

看看这个gb2312和gbk的编码是不是一样的,那是必然了,都是中文编码嘛,可以认为gb2312是gbk的一个子集。

我们再来看看decode和encode的语法格式:

encode:后面跟的参数是我要编码成的格式,例如:encode(“gbk”),表示我要编码成gbk格式。

decode:后面跟的参数是我现在的格式,例如:decode(“gbk”)表示我要将gbk编码的东西解码成unicode。

  • 我们在转回字符串,让它显示“我爱你”

python中将字符转换为编码值(Python字符编码转换)10

就说这么多了,有啥问题欢迎大家留言交流

更多内容请关注头条号:小5嵌入式

,
相关推荐RECOMMEND
2022艺术与科技专业课程有哪些 前景怎么样
主要课程:素描、色彩、装饰基础、透视学、工程与制图、展示设计、环境设施设计、展示空间表现技法、电脑设计软件应用、广告设计、印刷制稿与工艺、展示模型设计与制作、展示道具设计与制作、人体工程学、会展广告及...
科技布好还是棉麻布好 科技布沙发会掉皮吗
科技布好还是棉麻布好一、科技布和棉麻的优点科技布的技术含量高,科技布沙发采用的是混合皮革填充纤维材质,使得沙发的手感和一样。并且科技布很好清理,平常用抹布擦一擦就可以了。棉麻耐磨,不容易褪色,也不容易...
2022艺术与科技专业就业前景及方向
艺术与科技专业的就业前景不错,就业率较高。毕业生可在会展活动策划组织的企事业单位、会展建设企业、各类会展场馆、会展服务行业以及各类企事业单位会展部、市场营销部门进行会展设计、组织策划等工作。艺术与科技...
2022抖音正能量点赞高的句子 2022抖音高点赞量正能量的优美句子
  1、失望。大多数事情,不是你想明白后才觉得无所谓,而是你无所谓之后才突然想明什么是失望了?  2、错过。失去了缘分的人,即使在同一个城市,也不太容易碰到。&...
2022最火微信简短签名 简短精辟
1、信任就像一张纸,皱了,即使抚平,也恢复不了原样!不要去欺骗别人,因为你能骗到的,都是相信你的人。2、太多的为什么,没有答案;太多的答案,没有为什么。一切皆有定数,求之不得,弃之不舍。3、生活本来就...
2022微信开小号最新方法 微信开小号得方法详解
1、打开手机上的微信app,退出当前登录的账号,在登录界面选择“更多选项”;2、点击“注册”;3、输入你自己的新手机号,设置微信密码;4、一个手机号码只能同时绑定一个微信号,已经绑定了的手机号不能注册...