若是不声明编码,则中文会报错,即便是注释也会报错。python
# -*- coding: UTF-8 -*- 或者 #coding=utf-8 就好了 。 在第一行不区分大小写。markdown
文档编码是一种告诉程序——不管是计算机的操做系统仍是Python 代码——读取文档的规则。正确读取一个文档,每每须要先知道文件的扩展名,由于编码方式每每与扩展名有很大的关系。函数
(1)纯文本文档的获取与处理:直接用urlopen读取后,用read()函数获取文本内容便可。纯文本页面不要转换成BeautifulSoup对象,由于没法解析,会被认为是一堆字符串,只能用字符串的操做方法来解析。
(2)CSV文档、PDF文档等非纯文本文档的读取方式:直接经过文档获取连接以字符串的方式读取文档——经过io库的StringIO函数将字符串转换为StringIO对象——经过CSV库或PDF库将StringIO对象读取为相应格式的文档,post
编码类型:网站
(1)UTF-8:统一字符集-转换格式8位。它的开头有标记指示字符占了用了多少个字节来表示,一个字符最多有四个字节。 (2)ASCII:每一个字符7位,用来表示中文会不够用,可是英文够用了。 (3)UtF-8和ASCII的结合:首位为0,即只包含一个字节的UTF-8字符和ASCII通用,由于至关于只用到了7位。但首位为1的两字节UTF-8字符不通用。 (4)ISO编码:解决非英文非中文语言文档太大的问题,好比土耳其语没有那么多字符,又不能用单纯的ASCII。所以使用ASCII的首位来作特殊化,能够针对不一样的语言生成不一样的规则。
Encode和Decode:编码
字符串在Python内部的表示是unicode编码,所以,在作编码转换时,一般须要以unicode做为中间编码,即先将其余编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另外一种编码。atom
decode的做用是将其余编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gb2312编码的字符串str1转换成unicode编码。url
encode的做用是将unicode编码转换成其余编码的字符串,如str2.encode(‘gb2312’),表示将unicode编码的字符串str2转换成gb2312编码。spa
所以,转码的时候必定要先搞明白,字符串str是什么编码,而后decode成unicode,而后再encode成其余编码操作系统