【求助】Python 编码问题

hustu200715998 2013-04-28 05:33:05
写了个py的网页爬虫程序,其他都已经没问题了,就是utf-8的编码问题解决不了。代码如下:
rep=urllib.request.Request(url)
response=urllib.request.urlopen(rep)
page=response.read()#获得网页
way=self.way+str(self.num)+r'.html'
self.num+=1
file=open(way,'w')
m_charset = re.search('<meta\s*http-equiv="?Content-Type"? content="text/html;\s*charset=([\w\d-]+?)"', page.decode("ISO-8859-1"), re.IGNORECASE)
if m_charset.group(1) :
page=page.decode(m_charset.group(1),'ignore')
file.write(str(page))
file.close()

对于gbk和gb2312的网页都能没问题,就是utf-8不行,像上面这样,所有保存下来的utf-8编码的网页大小全部为0kb,如果改成
 if m_charset.group(1) and (m_charset.group(1)!=r'utf-8'):
page=page.decode(m_charset.group(1),'ignore')

虽然utf-8网页的大小不为0,但是只能显示utf-8的编码,而不能正常显示,用chrome浏览器打开如下:


弄了一下午,尝试了很多方法,都无法正常显示
...全文
124 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hustu200715998 2013-04-28
  • 打赏
  • 举报
回复
引用 1 楼 snmr_com 的回复:
file=open(way,'w', encoding='utf-8') 或者不进行decode,直接用二进制写入 file=open(way,'wb')
谢谢 解决了,利用你的方法稍微改了下,根据网页的编码方式来
 if m_charset.group(1) :
                    file=open(way,'w', encoding=m_charset.group(1))
ImN1 2013-04-28
  • 打赏
  • 举报
回复
file=open(way,'w', encoding='utf-8') 或者不进行decode,直接用二进制写入 file=open(way,'wb')

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧