찾다

 >  Q&A  >  본문

python - 微信中网页授权获取用户基本信息后得到中文乱码

打印出返回的用户信息的json值,如果是中文会出现乱码,比如省份,得到的值为u'province': u'\xe6\xb5\x99\xe6\xb1\x9f', 不知道哪里出错了。
另外,如果对返回的json值作解码,居然会出现40029错误。

阿神阿神2804일 전937

모든 응답(3)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-17 15:40:02

    그렇습니다. 질문자님, 'xe6xb5x99xe6xb1x9f'를 출력해 보세요. "Zhejiang"이 출력된다는 뜻 아닌가요?

    먼저 python2의 print에는 버그가 있습니다. 즉, x = {'province': 'Zhejiang'}이더라도 print x는 여전히 {'province': 'xe6xb5x99xe6xb1x9f'}를 표시합니다.

    이 문제는 Python3에서 해결되었습니다.

    하지만 주의 깊게 살펴보면 이는 귀하의 경우가 아닙니다. 문제는 utf8로 인코딩된 문자열이 유니코드로 인코딩된 문자열로 처리되어 유니코드 객체에 저장된다는 것입니다.

    현재로서는만(json 역직렬화 이후의 객체가 x에 존재한다고 가정)

    으아아아

    짜잔!

    회신하다
    0
  • PHPz

    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 오류는 인증을 통해 획득한 코드가 만료되었기 때문일 수 있습니다. 해당 코드는 한 번만 사용할 수 있으며 5분 동안 사용하지 않으면 자동으로 만료됩니다.

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-17 15:40:02

    @lohocla4dam의 답변은 저에게 많은 도움이 되었지만, 그의 답변은 python2에 대한 것이고 여기서 제 답변은 python3에 대한 것이기 때문에 몇 가지 추가 사항이 필요합니다.

    https://docs.python.org/3/library/codecs...,encoding换成raw_unicode_escape,即

    에 따르면 으아악

    회신하다
    0
  • 취소회신하다