我正在尝试使用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)
有人能告诉我发生了什么事吗?任何帮助,将不胜感激。谢谢!
答案 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