因此,我正在爲我的客戶端的Web瀏覽器類型的應用程序工作,並且我剛剛實現了書籤功能,但它無法按預期工作。當用戶點擊「書籤頁面」時,會彈出一個小表單,該表單會將網頁的標題放入一個行編輯中。問題是,如果網站在標題中包含一些外來或不尋常的符號,那麼Python會拋出一個錯誤,不能對字符串進行編碼。我怎麼能讓python處理所有可能的字符串,不管它是否有象形文字或其他奇怪的符號?使用Python 2.6和unicode
庫GUI和嵌入式瀏覽器:PyQt的
你在使用解析網站因此,我正在爲我的客戶端的Web瀏覽器類型的應用程序工作,並且我剛剛實現了書籤功能,但它無法按預期工作。當用戶點擊「書籤頁面」時,會彈出一個小表單,該表單會將網頁的標題放入一個行編輯中。問題是,如果網站在標題中包含一些外來或不尋常的符號,那麼Python會拋出一個錯誤,不能對字符串進行編碼。我怎麼能讓python處理所有可能的字符串,不管它是否有象形文字或其他奇怪的符號?使用Python 2.6和unicode
庫GUI和嵌入式瀏覽器:PyQt的
你在使用解析網站?我會推薦Beautiful Soup。它會嘗試並確定網頁的編碼並返回unicode。 Beautiful Soup's Parsing HTML section。編輯:也看看「美麗的湯給你的Unicode,該死」部分
我使用PyQT的QWebView來顯示網站並從中獲取所需的數據。 –
好的,我無法進一步幫助,因爲我對PyQT沒有任何經驗。如果您無法找到使用QWebView執行此操作的方法,則可以將此作爲最後的手段並單獨獲取頁面,但@ ekhumoro的解決方案似乎更合適 – jjwchoy
如果你使用QWebView.title
獲得當前網頁的標題,那麼它將返回QString
或Python的Unicode串。你得到哪一個取決於正在使用的PyQt API版本。對於版本1(這是Python2的默認設置),它將是QString
;對於版本2(這是Python3的默認版本),它將是一個python unicode字符串。無論是爲了在該行編輯正確顯示它,只是把它直接:
lineEdit.setText(webview.title())
既然你似乎是使用Python2,我假設webview.title()
返回一個QString
。如果你想將其轉換爲一個Python的Unicode字符串(例如,爲了使用SQLite使用它),那麼你就可以做到以下幾點:
title = unicode(webview.title())
請注意,您應該不經過編碼(如「 utf-8「)作爲unicode
的第二個參數,因爲這用於解碼字節字符串到unicode字符串。
如果做需要從QString
得到一個 「UTF-8」 編碼的字節字符串,那麼你可以這樣做:
data = unicode(webview.title()).encode('utf-8')
或:
data = webview.title().toUtf8().data()
如果沒有代碼,它的難以猜測,特別是因爲您的標題已經顯示您知道解決方案正在使用unicode ... – mac
我試過unicode(web.title(),「utf-8」),但後來得到一個錯誤,我無法存儲字節碼在sqlite中。 –