2016-04-05 18 views
0
doc = open("1.html").read().strip() 
doc = doc.decode("utf-8","ignore") 

この例は問題ありません。私は正しいユニコードの文字列docを得ることができます。Python文字列を文字列検索で変更できますか?

doc = open("1.html").read().strip() 
if u"charset=utf" in doc or u"charset=\"utf" in doc: 
    doc = doc.decode("utf-8","ignore") 

エラーがある「UnicodeDecodeError: 『ASCII』コーデックは位置289でバイト0xe7をデコードすることはできません:序ない範囲(128)で」 誰もがこれを説明することができますが?文字列docは文字列findによって変更できますか? 1.htmlには中国語が含まれています。

答えて

3

問題は、ファイルから読み取ったバイト文字列とユニコードリテラル文字列u"charset=utf"およびu"charset=\"utf"を比較していることです。それらを比較するために、Pythonはその時点でバイト文字列をUnicodeに変換する必要があります。decodeを手動で呼び出す前に、デフォルトのASCIIコーデックを使用します。

ソリューションは、常にバイト文字列とバイト文字列を比較することです:

if "charset=utf" in doc or "charset=\"utf" in doc: 
関連する問題