2012-07-26 21 views
2

我正在閱讀網頁內容並使用變音符號檢查單詞。該單詞出現在頁面內容中。但python find('ü')函數找不到這個單詞。python URL編碼與元音變音錯誤

import urllib2 
opener = urllib2.build_opener() 
page_content = opener.open(url).read() 
page_content.find('ü') 

我試圖用u'ü轉換搜索字符串。然後誤差

'SyntaxError: (unicode error) 'utf8' codec can't decode byte 0xfc in position 0' 

我已經使用# - - 編碼:UTF-8 - - 在我的.py文件。

我打印了page_content。那裏的變音符號轉換爲'ü'。如果我嘗試page_content.find('ü'),它工作正常。請讓我知道是否有更好的解決方案。

我將不勝感激任何建議。

+0

你在用什麼編輯器?保存文件時,請確保以UTF-8編碼保存(幾乎所有編輯器都有此選項)。在文件開始處使用編碼:utf-8的事實告訴解釋器你將使用utf-8,但是這並不會使utf-8文件被編碼,除非你自己編寫。 – 2012-07-26 11:33:32

+0

檢查編碼行的位置 - 它必須是文件的第一行或第二行 – 2012-07-26 11:37:01

+0

@MariaZverina這不起作用......即使他不會再收到錯誤,page_content.find('ü' )將始終返回-1,即使頁面包含ü。如上所述,他必須保存以UTF-8格式保存的文件才能正常工作。編碼聲明本身是不夠的。 – 2012-07-26 11:46:44

回答

2

你的Python試圖將源文件(或控制檯輸入)解析爲UTF-8,但它實際上是用Latin-1編碼的。你可以嘗試把一個

# coding: iso-8859-1 

評論在源文件的頂部,或者更好的,可使用支持UTF-8的編輯器/終端仿真程序和保存你的腳本在該編碼。

+1

甚至更​​好,您可以保留編碼:utf-8並實際上以UTF-8而非Latin-1保存文件 – 2012-07-26 11:31:16

0

如果您在文件頂部定義UTF-8編碼,如下所示。請注意,coding行必須是hashbang之後的第一行或第二行。

#!/usr/bin/python 
# coding: utf-8 

import urllib2 

url = 'http://en.wikipedia.org/wiki/Germanic_umlaut' 
opener = urllib2.build_opener() 
page_content = opener.open(url).read() 
page_content.find(u'ü')