码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-03-24 22:43:14      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:方式   版本   字符串   注意   数据类型   .com   font   判断   默认   

对于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 码来编码。

 

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

标签:方式   版本   字符串   注意   数据类型   .com   font   判断   默认   

原文地址:http://www.cnblogs.com/yongliang/p/6613769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!