从URL读取unicode中的文本文件?

时间:2012-02-09 06:06:49

标签: python urllib2 urllib

我正在尝试使用urllib和urllib2来读取其中包含法语字符的文本文件,例如“é”,“à”等。

def load(url):
     from urllib2 import Request, urlopen, URLError, HTTPError

     req = Request(url)

     f = urlopen(req)
     f.readline()

     for line in f:
          line = line.split('\t')
          word = line[0].encode('utf-8')

我有一种感觉,read()方法返回一个字节字符串,所以我使用encode('utf-8')来获取unicode值,但是这给了我以下错误

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 6: ordinal not in range(128)

有人能告诉我发生了什么事吗?任何帮助,将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:5)

是的,你正在从文件中读取字节。您必须做的是解码,而不是编码,将字节串转换为Unicode。你看,它已经已经编码了。如果不是,你就不需要做任何事了。

word = unicode(line[0], "utf8")

您必须指定文件中使用的编码如果不是utf8,则另一个好的嫌疑人可能是latin1。或者,您知道,因为它是一个Web文档,您可以从标题和/或其内容中删除文档的编码,但这有点超出了您的问题的范围。

答案 1 :(得分:0)

将代码放在顶部。

# coding: utf-8

实际上支持unicode对于python来说并不容易。 也推荐这篇文章。

http://www.python.org/dev/peps/pep-0263

http://groups.google.com/group/python-excel/browse_thread/thread/100ec019d3a2a1a9