http://blog.csdn.net/mottolinux/article/details/52560062
1 关于Python编码的基本常识
在python里面 “明文”是unicode类型和str , “密文”是其他的编码格式 如gbk utf-8 latin-1等等
编码: “明文”->”密文” .encode([目标编码格式]) 对象必须为unicode类型
解码: “密文”->”明文” .decode([源编码格式]) 对象为str类型
对于汉字 一共有三大类编码方式
以中文汉字”李”为例子
a. unicode类 机器码 x67x4e
unicode(python表示) u674e
HTML Entity 李
UTF-16(BE) 0x674E
UTF-32(BE) 0x0000674E
b. UTF-8类 机器码 xe6x9dx8e
UTF-8(python表示) xe6x9dx8e
URL Escape Code %E6%9D%8E
Octal Escape Sequence 346235216
c. gb类 机器码 xc0xee
gb2312 gbk gb18030 xc0xee
2 设置 .py文件上的中文编码格式
(1)py文件内容上出现字符串上的中文
(2)包括前面带u的(转换成unicode格式的字符串) 首先也是根据设置的文件编码格式读取字符串文字量 再作unicode的转换
(3)如果添加了#coding=utf-8,则将中文按utf-8转成unicode
(4)如果没有添加#coding=utf-8,则按系统默认的编码格式
(5)系统的默认编码,获取代码:
sys.getdefaultencoding()
3 如何设置.py文件的编码格式:
(1)#coding=<encoding>
(2)<encoding>根据编辑器不同而不同
sublime 编辑器默认是utf-8
win7自带的操作系统:asciii /gbk--要读取中文,要gbk
可以另存为:utf-8
4 win7文件名是中文或者文件夹是中文
(1)都是gbk编码
(2)读写文件时,必须open(.....encode('gbk'),'r')
5 win7文件上的内容包含中文
(1)和4的不一样
(2)文件的内容要根据编码的格式(记事本可能另存为)
(3)建议编码成utf-8,sublime打开不需要转换
6 爬虫结果的存储
(1)现在的网页基本都是UTF-8编码(HTML5默认编码)
(2)经过BeautifulSoup处理后的HTML元素内容 类型为NavigableString
(3)可以直接print 由第3点可推断出 NavigableString底层类型为unicode
(4)经过.replace()方法后可转换为unicode类型
7 不提倡
(1)不使用sys.setdefaultencoding(‘utf-8’)解决编码问题
8 其他
(1)字符串中间处理过程全部转化为unicode处理 只在数据的入口和出口作相应的.decode()和.encode()处理