1. 程式人生 > 其它 >字串編碼轉換

字串編碼轉換

其實編碼問題很好搞定,只要記住一點:任何平臺的任何編碼,都能和Unicode互相轉換。UTF-8 與 GBK 互相轉換,那就先把 UTF-8 轉換成 Unicode,再從 Unicode 轉換成 GBK,反之同理。

  1.   # 這是一個 UTF-8 編碼的字串
  2.   utf8Str = "你好地球"
  3.    
  4.   # 1. 將 UTF-8 編碼的字串 轉換成 Unicode 編碼
  5.   unicodeStr = utf8Str.decode("UTF-8")
  6.    
  7.   # 2. 再將 Unicode 編碼格式字串 轉換成 GBK 編碼
  8.   gbkData = unicodeStr.encode("GBK")
  9.    
  10.   # 1. 再將 GBK 編碼格式字串 轉化成 Unicode
  11.   unicodeStr = gbkData.decode("gbk")
  12.    
  13.   # 2. 再將 Unicode 編碼格式字串轉換成 UTF-8
  14.   utf8Str = unicodeStr.encode("UTF-8")
  • decode: 的作用是將其它編碼的字串轉換成 Unicode 編碼
  • encode :的作用是將 Unicode 編碼轉換成其他編碼的字串
  • 一句話:UTF-8 是對 Unicode 字符集記性編碼的一種編碼格式

注意事項:

json.loads() 是把 Json 格式字串解碼轉換成 Python 物件,如果在 json.loads 的時候出錯,要注意被解碼的 Json 字元的編碼。
如果傳入的字串的編碼不是 UTF-8 的話,需要制定字元編碼的引數:encoding

dataDict = json.loads(jsonStrGBK);

dataJsonStr 是 JSON 字串,假設其編碼本身是非 UTF-8 的話而是 GBK 的,那麼上述程式碼會導致出錯,改為對應的。

dataDict = json.loads(jsonStrGBK, encoding="GBK")

如果 dataJsonStr 通過 encoding 指定了合適的編碼,但是其中又包含了其它編碼的字元,則需要先去將 dataJsonStr 轉換為Unicode,然後再指定編碼格式呼叫 json.loads()

  1.   dataJsonStrUni = data.JsonStr.decode("GB2312")
  2.   dataDict = json.loads(dataJsontrUni, encoding="GB2312")
  3.