python Unicode, 中文字符顯示亂碼問題


python中編碼問題是一個必然會遇見的問題,尤其是中文編碼,一不小心就出現亂碼。

為此,一個絕對不能繞過的模塊codecs, 可以看出python對編碼這塊的支持甚是強大。

另有附帶codecs代碼示例的博文,順着文章一通敲下來,python中的編碼問題自然就不是問題了.

在使用python寫一個簡單爬蟲的過程中,我遇見一個相關問題,也算是比較奇葩了,瞎折騰了一晚上才算是解決。

本來抓取網頁內容編碼是 "GB2312", 傳入值以后使用decode('gb2312', 'ignore')后解碼為unicode,再使用Beautiful Soup進行解析處理,解析結構存入list, dict的復合結構中.

最后直接使用json.dumps()返回string結果, 發現中文沒有正確顯示,但也並非亂碼, 而是類似"\u5b9e\u8df5\u8fdc"的字符.

以為是編碼不對,但嘗試過其他各種編碼方式也都沒有正確顯示中文,一直到網上搜索到decode("unicode_escape")這一句才解決問題.

個人理解為:存在於list,dict等容器中的unicode字符就是一這種編碼方式存在的,單獨打印某一項的時候,會顯示成中文字符,但是直接打印整個list的時候,就不會做字符映射以正確顯示中文,必須使用decode("unicode_escape").

這里也是因為我自己偷懶,直接使用json.dumps()將整個list的內容一股腦打印出來,圖方便,反倒引入了這么一個問題,若是按照list的結構,逐項輸出,就不存在這類中文字符顯示異常的問題了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM