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'}
解決辦法有很多種,
- 定義預設解碼用Unicode解碼
# -*- coding:gb18030 -*-
- 用python2自帶的unicode方法
方法轉換unicode()
- 或者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