我用Python3的requests库从一个api请求一个json数据,然后试图去print出来:
res = requests.get("http://aaa.com/bbb.php")
res.encoding='utf-8'
name = res.json(encoding = "utf8")["name"]
print(name)
也试了一下方法:
name.encode('utf8').decode("utf8")
print(name)
我这个name字符串有可能有中文,数字,英文,也有可能有阿拉伯文。或者只有他们之中的一个。
我每次print的时候有时候能输出成功,有时候有以下错误:
File "demo.py", line 53, in play_one
print(json.loads(result_str)["name"])
UnicodeEncodeError: 'gbk' codec can't encode character '\u062f' in position 0: illegal multibyte sequence
我该怎么处理这个字符串,有可能同一个字符串混有不同的编码?还是我获取到的字符串每次都是不同编码的,我应该怎么正确输去这个不确定的字符串?
標準 JSON ではエンコーディングを指定する必要はありません。
簡体字中国語版の Windows を使用している場合、システム コンソールは GBK エンコードで文字を出力する必要がありますが、文字「U+062F د ARABIC LETTER DAL」は GBK エンコードに対応していないため、出力できません。
ファイルに書き込むか、アラビア語版の Windows をインストールするかを選択できます。または、より優れた Unicode サポートを備えた別のオペレーティング システム/端末を使用してください。
まず、なぜリクエストにこの問題が発生するのかを理解する必要があります
記事内ではいくつかの方法が言及されていますが、3.x ではこの問題が修正されているようです。
リーリー私の提案
まず手動でページにアクセスして、このページのヘッダー部分の文字セットがGBKであると仮定して、どのようなエンコーディングであるかを確認します