读《Python3 是如何解决棘手的字符编码问题的》的笔记

对于Python的编码值得注意的是不同的版本编码方式是不同的。Python3默认的是utf-8而Python2则是ASCll,因此对不同的版本对于UnicodeEncodeError和UnicodeDecodeError的处理也是不一样的!因此对于decode()和encode()的理解和使用也是不一样的!但是两个函数的使用原理是一样的!decode()就是将字节解码成字符,encode()则是相反!值得注意的是字节方便存储和网络传输,而字符用于显示。

对于Python3的编码总结:文本字符全部用 str 类型表示,str 能表示 Unicode 字符集中所有字符,而二进制字节数据用一种全新的数据类型,用 bytes 来表示。在字符引号前面就可以表示这是字节表示的对象。但是这里的局限性就是不嫩能够表示中文。

一图明了:

该python2上场的时候了:

Python2默认的是ASCLL,str表示的字节而Unicode表示的是字符。我们要把 unicode 符号保存到文件或者传输到网络就需要经过编码处理转换成 str 类型,于是 python 提供了 encode 方法,从 unicode 转换到 str。两者转换的关系如下:

注意的问题

文件的读写:

write:判断将要写入的是什么类型,如果是字节的话就直接写入,如果是字符的话那么它会先调用 encode 方法把 unicode 字符串转换成二进制形式的 str 类型,才保存到文件,而 encode 方法会使用 python 默认的 ascii 码来编码。

 

转载于:https://www.cnblogs.com/yongliang/p/6613769.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值