打印出返回的用户信息的json值,如果是中文会出现乱码,比如省份,得到的值为u'province': u'\xe6\xb5\x99\xe6\xb1\x9f', 不知道哪里出错了。
另外,如果对返回的json值作解码,居然会出现40029错误。
高洛峰2017-04-17 15:40:02
沒有錯啊,題主你試試print 'xe6xb5x99xe6xb1x9f',這不就是印出來是「浙江」麼。
首先,python2的print有bug,就是雖然x = {‘province': '浙江'},但print x還是會顯示{'province': 'xe6xb5x99xe6xb1x9f'}。
這個問題到Python3裡已經解決了。
但仔細觀察一下這不是你的case。你的問題是以utf8編碼的字串被當成unicode編碼的字串放進unicode物件裡去了。
這時候只要(假設你的json反序列化之後的物件存在x裡)
python
>>> print x[u'province'].encode('raw_unicode_encoding') '浙江'
Voilà!
PHPz2017-04-17 15:40:02
應該是沒有設定編碼格式的問題,在取得使用者資訊的時候設定編碼為UTF-8,另外取得使用者資訊介面https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
中的參數lang=zh_CN
要帶上。
至於40029錯誤,可能是授權取得到的code已經過期,code只能使用一次,5分鐘未被使用自動過期。
大家讲道理2017-04-17 15:40:02
@lohocla4dam 的答案給我幫助很多,只是我需要做些補充,因為他的答案是針對python2的,我這裡的python3的
根據 https://docs.python.org/3/library/codecs...,encoding換成raw_unicode_escape,即
>>> print(x['province'].encode('raw_unicode_escape')