天天看點

python 2 編碼問題

python一共有編碼類型

utf-8
utf-16
GB2312
GB18030
GBK
      

python2 預設的編碼模式是ascii,對于字元串預設是unicode編碼,

是以無法直接顯示中文字元串,我們在态勢感覺查詢前加了個u 用unicode編碼,輸出就正常,

但是告警詳情卻亂碼是因為我們py檔案頂部寫了 預設了用utf-8解碼,是以unicode編碼,utf-8解碼就出現亂碼​

​# -*- coding:UTF-8 -*-​

api_params = {
    u"态勢感覺查詢":{"Action": "1",},
    "告警詳情":{"Action": "2",}
}


for k,v in api_params.items():
    print type(k)
    print k,v

輸出結果
<type 'str'>
鍛婅璇︽儏 {'Action': '2'}
<type 'unicode'>
态勢感覺查詢 {'Action': '1'}
      

解決辦法有很多種,

  1. 定義預設解碼用Unicode解碼 ​

    ​# -*- coding:gb18030 -*-​

  2. 用python2自帶的unicode方法 ​

    ​unicode()​

    ​方法轉換
  3. 或者decode("utf-8")
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

api_params = {
    "态勢感覺查詢":{"Action": "1",},
    "告警詳情":{"Action": "1",}
}


for k,v in api_params.items():
    print unicode(k)
    print k.decode("utf-8"),v