2011-12-03 87 views
2

UnicodeDecodeCharacter 'ascii' cocec can't decode byte 0xe3 at position 348: ordinal not in range(128)閱讀網站,有日本

我有urllib.urlopen -ing一個網站,我有一個.readlines()經歷它逐段,搜索特定的文本。

我從一個有幾個日文字符的網站上閱讀(我想跳過這一部分),但是當它讀取它時,我的代碼崩潰。

或者更簡單的說明,我可以將整個urllib.urlopen轉換爲unicode,以便我不會收到此ASCII錯誤,如果是這樣,我該如何搜索它?

+1

請告訴我們你在說什麼*語言,向我們展示一些實際的代碼,甚至可能會告訴我們你正在談論的網站。 – deceze

+1

@Iria Zeiram:請輸入網址和代碼。 – Thanatos

+0

@deceze:這似乎是Python,如果這就是你想知道的。 – Thanatos

回答

2

您可以在原始字節讀取,並將其轉換爲ASCII(而忽略了非ASCII),然後分割線:

import urllib 

url = 'http://www.asahi.com/' 
u = urllib.urlopen(url) 
rawdata = u.read() 
u.close() 
asciidata = rawdata.decode('ascii', 'ignore') 
asciilines = asciidata.splitlines(False) 

for line in asciilines[:40]: 
    print line 

此代碼應被你開始。技術上更正確的方法涉及讀取標題或主體的前幾行以找到正確的字符集,然後使用該字符集進行解碼。

+0

http://pypi.python.org/pypi/chardet可用於編碼檢測器 – sunqiang