打印出返回的用户信息的json值,如果是中文会出现乱码,比如省份,得到的值为u'province': u'\xe6\xb5\x99\xe6\xb1\x9f', 不知道哪里出错了。 另外,如果对返回的json值作解码,居然会出现40029错误。
闭关修行中......
没有错啊,题主你试试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') '浙江'
python
>>> print x[u'province'].encode('raw_unicode_encoding') '浙江'
Voilà!
应该是没有设置编码格式的问题,在获取用户信息的时候设置编码为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分钟未被使用自动过期。
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
lang=zh_CN
@lohocla4dam 的答案给我帮助很多,只是我需要做些补充,因为他的答案是针对python2的,我这里的python3的
根据 https://docs.python.org/3/library/codecs...,encoding换成raw_unicode_escape,即
>>> print(x['province'].encode('raw_unicode_escape')
没有错啊,题主你试试print 'xe6xb5x99xe6xb1x9f',这不就是打印出来是“浙江”么。
首先,python2的print有bug,就是虽然x = {‘province': '浙江'},但是print x还是会显示{'province': 'xe6xb5x99xe6xb1x9f'}。
这个问题到Python3里已经解决了。
但是仔细观察一下这不是你的case。你的问题是以utf8编码的字符串被当成unicode编码的字符串放进unicode对象里去了。
这个时候只要(假设你的json反序列化之后的对象存在x里)
Voilà!
应该是没有设置编码格式的问题,在获取用户信息的时候设置编码为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分钟未被使用自动过期。
@lohocla4dam 的答案给我帮助很多,只是我需要做些补充,因为他的答案是针对python2的,我这里的python3的
根据 https://docs.python.org/3/library/codecs...,encoding换成raw_unicode_escape,即