python真是个好东西,简直是拖站,处理文本的利器啊。

某人最近在一些网站上的内容使用python的urllib拖下来并且保存到sqlite数据库里面的时候,出现了这个错误

UnicodeDecodeError: 'ascii' codec can't decode byte

这个错误是sqlite丢出来的,原因很简单,就是因为python默认的字符编码是unicode,而我们的目标网站的内容编码是GB2312格式引起的。

解决方法就是使用python里面str类型的 encode()和decode()方法。

decode()是将其他编码方式转换成unicode,而encode是将 unicode类型的字符串转换成其他类型的编码。

解决方法如下,将其他类型的编码方式的文本decode成为unicode即可。同样的方法不只用来转换网页编码,同样可以用来转换windows下的文本文件的编码。

url= "http://xxxxxxx.com/d/bbbbb.html"
 content = urllib2.urlopen(url).read()
 f_content = content.<span style="color: #ff0000;">decode('gb2312','ignore')</span>
 self.execute('''INSERT INTO entries (item_id,webcontent) VALUES(?,?)''',itemid,f_content)