打印出返回的用户信息的json值,如果是中文会出现乱码,比如省份,得到的值为u'province': u'\xe6\xb5\x99\xe6\xb1\x9f', 不知道哪里出错了。 另外,如果对返回的json值作解码,居然会出现40029错误。
闭关修行中......
そうです、質問者さんは「xe6xb5x99xe6xb1x9f」と印刷してみてください。
まず第一に、python2 の print にはバグがあります。つまり、x = {'province': 'Zhejiang'} であっても、print x は依然として {'province': 'xe6xb5x99xe6xb1x9f'} を表示します。 この問題は Python3 で解決されました。
しかし、よく見てください、これはあなたのケースではありません。問題は、utf8 でエンコードされた文字列が Unicode でエンコードされた文字列として扱われ、Unicode オブジェクトに入れられることです。
現時点でのみ (json 逆シリアル化後のオブジェクトが x に存在すると仮定します)
ほら!
ユーザー情報を取得する際には、エンコード形式を UTF-8 に設定する必要があります。また、ユーザー情報を取得するためのインターフェース https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN のパラメーター lang=zh_CN を持ってくる必要があります。 40029 エラーについては、認証によって取得したコードの有効期限が切れている可能性があります。コードは 1 回しか使用できず、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... によると、エンコーディングは raw_unicode_escape に変更されます。これは
そうです、質問者さんは「xe6xb5x99xe6xb1x9f」と印刷してみてください。
まず第一に、python2 の print にはバグがあります。つまり、x = {'province': 'Zhejiang'} であっても、print x は依然として {'province': 'xe6xb5x99xe6xb1x9f'} を表示します。
この問題は Python3 で解決されました。
しかし、よく見てください、これはあなたのケースではありません。問題は、utf8 でエンコードされた文字列が Unicode でエンコードされた文字列として扱われ、Unicode オブジェクトに入れられることです。
現時点でのみ (json 逆シリアル化後のオブジェクトが x に存在すると仮定します)
リーリーほら!
ユーザー情報を取得する際には、エンコード形式を UTF-8 に設定する必要があります。また、ユーザー情報を取得するためのインターフェース
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
のパラメーターlang=zh_CN
を持ってくる必要があります。40029 エラーについては、認証によって取得したコードの有効期限が切れている可能性があります。コードは 1 回しか使用できず、5 分間使用しないと自動的に期限切れになります。
@lohocla4dam の答えは非常に役に立ちましたが、彼の答えは python2 用であり、ここでの私の答えは python3 用であるため、いくつか追加する必要があります
https://docs.python.org/3/library/codecs... によると、エンコーディングは raw_unicode_escape に変更されます。これは
リーリー