2012-02-09 18 views
1

"é"、 "à"などのような、フランス語の文字を含むテキストファイルからの読み込みにurllibとurllib2を使用しようとしています。URLからユニコードのテキストファイルを読み込む?

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

はい、あなたはファイルからバイトを読んでいます。あなたがしなければならないのは、デコードではなく、エンコードではなく、ユニコードへのバイト文字列です。それは既にです。がコード化されています。そうでなければ、何もする必要はありません。

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

あなたはファイルで使用されるエンコーディングを指定する必要があります。utf8でない場合は、別のいい容疑者がlatin1である可能性があります。それとも、Web文書なので、ヘッダーやその内容から文書のエンコーディングを取り出すことができますが、それはあなたの質問の範囲を少し超えています。