1. 程式人生 > >python中json處理中文問題

python中json處理中文問題

Json處理中文問題:

    關於python字串的處理問題,如果深入的研究下去,我覺得可以寫2篇文章了(實際上自己還沒整很明白),在這裡主要還是總結下使用python2.7.11處理json資料的問題。前期做介面測試,處理最多的事情就是,把資料組裝成各種協議的報文,然後傳送出去。然後對返回的報文進行解析,後面就遇到將資料封裝在json內嵌入在http的body內傳送到web伺服器,然後伺服器處理完後,返回json資料結果的問題。在這裡面就需要考慮json裡有中文資料,怎麼進行組裝和怎麼進行解析,以下是基礎學習的一點總結:

    第一:Python 2.7.11的預設編碼格式是ascii編碼,而python3的已經是unicode,在學習編解碼的時,有出現亂碼的問題,也有出現list或者dictionary或者tuple型別內的中文顯示為unicode的問題。出現亂碼的時候,應該先看下當前字元編碼格式是什麼,再看下當前檔案編碼格式是什麼,或者沒有設定檔案格式時,檢視下IDE的預設編碼格式是什麼。最推崇的方式當然是每次編碼,都對檔案編碼格式進行指定,如在檔案前 設定# coding= utf-8。

   第二:字串在Python內部的表示是unicode編碼,因此,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。decode的作用是將其他編碼的字串轉換成unicode編碼,如str1.decode('gb2312'),表示將gb2312編碼的字串str1轉換成unicode編碼。encode的作用是將unicode編碼轉換成其他編碼的字串,如str2.encode('gb2312'),表示將unicode編碼的字串str2轉換成gb2312編碼。因此,轉碼的時候一定要先搞明白,字串str是什麼編碼,然後decode成unicode,然後再encode成其他編碼

   第三:將json資料轉換成python資料後,一般會得到一個dict型別的變數,此時內部的資料都是unicode編碼,所以中文的顯示看著很痛苦,但是對於dict得到每個key的value後,中文就能正常顯示了。