2012-02-09 52 views
1

我正嘗試使用urllib和urllib2從包含法語字符的文本文件中讀取,如「é」,「à」等。從URL中讀取unicode中的文本文件?

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()方法返回我一個字節的字符串,所以我使用的編碼(「UTF-8」)獲得的Unicode值,但是這給了我下面的錯誤

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

有人能告訴我發生了什麼事嗎?任何幫助,將不勝感激。謝謝!

回答

5

是的,你是從文件讀取的字節。你必須做的是解碼,而不是編碼,將字節串轉換爲Unicode。這是編碼已經,你看。如果不是這樣,你就不需要對它做任何事情。

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

您必須指定文件中使用的編碼如果不是utf8,另一個好嫌疑人可能是latin1。或者,您知道,因爲它是一個Web文檔,您可以將文檔的編碼從頭文件和/或其內容中提取出來,但這超出了您的問題範圍。