cx_Freeze 打包以後PyQt webview 產生亂碼

之前因為接觸 Anki 以後,發現了 Anki 是用 Python 寫出來的。
據說Python比較貼近人類語言,因此比較簡單易學。
因此決定把Python 當作是我踏入 coding 的程式語言,學了一年以來,總算是明白了一些程式邏輯,也開始寫些小程式當作練習。

用PyQt 的QWebView 顯示外部網頁,在邊寫邊測試的時候,一切正常。

用cx_Freeze 打包後,中文網頁竟然變亂碼,把原本的big5 編碼用 cp1252 來編,

查了網路上的資料原本以為設定了
websettings2 = self.webView_2.settings()
websettings2.setDefaultTextEncoding("Big5")
以後就會恢復正常,結果一點都沒改善

弄了半天,原來只要在
app = QApplication(sys.argv) 後面加上
app.Encoding(QApplication.UnicodeUTF8)
utfcodec = QTextCodec.codecForName("UTF-8")
QTextCodec.setCodecForTr(utfcodec)
QTextCodec.setCodecForLocale(utfcodec)
QTextCodec.setCodecForCStrings(utfcodec)


並把
C:\Python27\Lib\site-packages\PyQt4\plugins\codecs
複製到打包出來的目錄下就好了

同理適用於PySide

參考網頁:解决py2exe打包pyside后webview产生的中文乱码问题 | YQ

留言

這個網誌中的熱門文章

Anki 教學 - 基礎知識

Anki 教學 - 學習卡片

Anki 教學 - 牌組選項之新卡片