Python2中編碼相關的問題很是讓人蛋疼,特別是中文字符。
比如本文所述的中文網頁GBK編碼的詭異問題。
現象
例如:盲錄職氓聭聵
,其實網頁裏面正常的應該是會員
分析
接着上面的例子,會員
這部分亂碼通過repr()
函數求值得到如下結果
\xc3\xa4\xc2\xbc\xc2\x9a\xc3\xa5\xc2\x91\xc2\x98
使用type()
函數求值得到的結果爲unicode
eval(repr())
出來值爲
盲錄職氓聭聵
通過查表上述6個漢字對應
c3a4 c2bc c29a c3a5 c291 c298
而上面內容對應的UTF-8值就是會員
解決方法
相當詭異的是本身是unicode編碼,卻被當作GBK系列來解碼,結果導致亂碼。因此將這些字符先編碼再解決解決問題。
encode('raw_unicode_escape').decode()