python3 unicode字符串类型_Python bytes类型介绍、Python3与2字符串的区别、Python3与2编码总结...

Python bytes类型介绍

Python 2 —— bytes类型

1 >>> s = "路飞"

2 >>> prints3 路飞4 >>>s5 '\xe8\xb7\xaf\xe9\xa3\x9e'

虽说打印的是路飞,但直接调用变量s,看到的却是一个个的16进制表示的“二进制字节”,我们如何称呼这样的数据呢?直接叫“二进制”?可以的,但相比与0101000111,这个“数据串”在表现形式上又把2进制转成了16进制来表示,这是为什么呢?为的就是让人们看起来更可读。我们称之为bytes类型,即字节类型。它把8个二进制一组称为byte,用16进制来表示。

1 >>>type(s)2

3 >>>bytes4

5 >>> s = "路飞" #定义"路飞"

6 >>> s1 = b"路飞" #定义“\xc2\xb7\xb7\xc9”

7 >>>s18 '\xc2\xb7\xb7\xc9'

Python2中的字符串更应该称为字节串,我们通过存储方式就能看出来,但Python2中还有一个类型是bytes。在Python2作用,bytes==str,就是这么回事。

图片没有字符编码

Python3与2字符串的区别

图片在内存中的显示

f = open('课程介绍.png')

a=f.read()

a

1cf4f959f6ecb8f1d31fc247c3ad1e7a.png

9310dbdecd6ae85beedffb688a90c1a3.png

如何让 Python2 实现 写一个软件,在全球各国的电脑上直接看?

以 unicode 编码写你的软件

python2里还有个单独的类型是unicode , 把字符串解码后,就会变成unicode

1 >>>s2 '\xe8\xb7\xaf\xe9\xa3\x9e' #utf-8

3 >>> s.decode('utf-8')4 u'\u8def\u98de' #unicode 在unicode编码表里对应的位置

5 >>> print(s.decode('utf-8'))6 路飞 #unicode 格式的字符

95e11a902fdd0507675d130e0e23e38d.png

Python3与2编码总结

Python 发展历史

由于Python创始人在开发初期认知的局限性,其并未预料到python能发展成一个全球流行的语言,导致其开发初期并没有把支持全球各国语言当做重要的事情来做,所以就轻佻的把ASCII当做了默认编码。 当后来大家对支持汉字、日文、法语等语言的呼声越来越高时,Python于是准备引入unicode,但若直接把默认编码改成unicode的话是不现实的, 因为很多软件就是基于之前的默认编码ASCII开发的,编码一换,那些软件的编码就都乱了。所以Python 2 就直接 搞了一个新的字符类型,就叫unicode类型,比如你想让你的中文在全球所有电脑上正常显示,在内存里就得把字符串存成unicode类型。

1 >>> s = "路飞"

2 >>>s3 '\xe8\xb7\xaf\xe9\xa3\x9e'

4 >>> s2 = s.decode("utf-8")5 >>>s26 u'\u8def\u98de'

7 >>>type(s2)8

到了2008年,python发展已近20年,创始人龟叔越来越觉得python里的好多东西已发展的不像他的初衷那样,开始变得臃肿、不简洁、且有些设计让人摸不到头脑,比如unicode 与str类型,str 与bytes类型的关系,这给很多python程序员造成了困扰。

龟叔再也忍不了,像之前一样的修修补补已不能让Python变的更好,于是来了个大变革,Python3横空出世,不兼容python2,python3比python2做了非常多的改进,其中一个就是终于把字符串变成了unicode,文件默认编码变成了utf-8,这意味着,只要用python3,无论你的程序是以哪种编码开发的,都可以在全球各国电脑上正常显示了。

PY3 除了把字符串的编码改成了unicode, 还把str 和bytes 做了明确区分, str 就是unicode格式的字符, bytes就是单纯二进制了。

fd370b4a2724c5a7fc496a7a3d0f9b11.png

为什么在py3里,把unicode编码后,字符串就变成了bytes格式? 你直接给我直接打印成gbk的字符展示不好么?

就是想通过这样的方式明确的告诉你,想在py3里看字符,必须得是unicode编码,其它编码一律按bytes格式展示。

常见编码错误的原因有:

1、Python解释器的默认编码

2、Python源文件文件编码

3、Terminal使用的编码

4、操作系统的语言设置

掌握了编码之前的关系后,挨个排错就好了

将 utf-8编码 转换为 GBK编码(轻易不要转换编码,因为转编码是不可逆的)

a29b86658d717abee3c7b84b435785b5.png

655a18ed1489c5e5d847fc2fb572373e.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值