网页中的文本抓取下来是乱码,怎么解析?

想写一个抓文的小demo,发现直接拉下来的web内容,文本是乱码,但是用google的源代码查看,能够正确显示文字。
这是怎么回事呢?我试过把抓取内容的字符串用gbk转为unicode,效果并不好。
我测试的url :view-source:http://book.zongheng.com/chapter/309318/33658339.html

请问:
1,这样的文本一般采用的是什么编码呢?
2,为何页面和google的源代码查看器可以正确显示呢?

http://www.zhihu.com/question/19696249

用 chardet 看了,是gb2312的编码。系统是utf-8的编码。
但是 str.decode('gb2312').encode('utf-8') 转码后,文本只有一部分从乱码变成中文显示。
只做 str.decode('gb2312') 会有另一部份从乱码变成中文
这种奇怪的现象是怎么回事呢?

这个网站是utf-8编码的,相应头为:Content-Type text/html; charset=UTF-8

下载数据二进制转为字符串时,应该制定编码的utf-8