python的字符编码

什么是字符编码

计算机能执行和储存的数据均为二进制数字,因此写出的代码字符均要转换成二进制数字才能执行(字符–>转换–>数字),这个过程就是一个字符如何通过标准转换成数字,而不同的标准就是不同的编码。

字符编码的分类

ASCII码

用一个字节(byte=8bit)来代表一个字符,一共可代表256个字符,而英文只用了其中127个字符。

unicode

是一种字符集也是一种编码方式,统一用两个字节来代表一个字符,一共可代表65535个字符,而英文编码时也会使用两个字节,因此比ascii码多了一倍的空间,因此衍生出了utf-8这种编码方式,为可变长的字节,不同的字符会以一至三个字节来表示,节约空间。
unicode转换速度快,因此储存在内存中默认的编码和解码方式均为unicode
utf节省空间,但转换速度慢,利于在网络中传输文本

python的代码解释

python默认编码方式

python2默认采用ascii的编码方式。
在头文件中加入#-*-coding:utf-8-*- 来进行编解码
python3默认采用utf-8的编码方式。
具体编码方式会因为解释器的设置而改变,可使用函数sys.getdefaultencoding() 来进行查询

编码解码函数

bytes.decode() 将二进制数据流根据指定方式解码
str.endode() 将字符串类型通过编码变为二进制字符串
python3中
在python解释器中,当定义了一个新的字符串时(str类型),在内存中储存时会以unicode编码二进制字符保存,可以使用任意编码标准将str类型encode将其编码成任意byte类型字符。所以两种类型是不能混用的
python2中
而在2中,定义了新的字符串的时候会自动以头文件定义的编码格式编码成bytes类型,因此在2中str和bytes是一种数据类型,因此2中不指定编码格式,就会以默认acsii码编码,所以当终端采用unicode解码中文时会出现乱码的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值