[python IO学习篇]补充打开中文路径的文件
http://blog.csdn.net/mottolinux/article/details/52560062
1 关于Python编码的基本常识 在python里面 “明文”是unicode类型和str , “密文”是其他的编码格式 如gbk utf-8 latin-1等等 编码: “明文”->”密文” .encode([目标编码格式]) 对象必须为unicode类型 解码: “密文”->”明文” .decode([源编码格式]) 对象为str类型 对于汉字 一共有三大类编码方式 以中文汉字”李”为例子 a. unicode类 机器码 \x67\x4e unicode(python表示) \u674e HTML Entity 李 UTF-16(BE) 0x674E UTF-32(BE) 0x0000674E b. UTF-8类 机器码 \xe6\x9d\x8e UTF-8(python表示) \xe6\x9d\x8e URL Escape Code %E6%9D%8E Octal Escape Sequence \346\235\216 c. gb类 机器码 \xc0\xee gb2312 gbk gb18030 \xc0\xee
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()处理