私はサーバーからデータを取得するためにPythonリクエストモジュールを使用したいが、私がheaders={'content-type':'application/json;charset=utf-8'}
を設定したとしても、常にバイトデータを取得する。なぜPythonリクエストモジュールを使用すると、私はいつもサーバからバイトデータを取得できますか?
マイコード:私は、ヘッダーを印刷するとき
import requests
from io import BytesIO
headers={'content-type':'application/json;charset=utf-8'}
#response=requests.get("https://api-dev.creams.io/buildings/2/contract- templates",headers=headers)
r = requests.get('https://developer.github.com/v3/timeline.json',headers=headers)
print(r.headers)
# response = urlopen("https://beta.creams.io/")
、content-type
はまだtext/html;charset-utf-8
なると私は常にバイトのデータを取得します。 r.text
を使用すると、エラー:UnicodeEncodeError: 'ascii' codec can't encode character '\u2022' in position 382: ordinal not in range(128)
が表示されます。そして、私はr.content
メソッドを使用して、私はいつもバイトデータ(b'
で始まる)を取得します。私はutf-8エンコーディング文字列を取得したいだけです。どうすれば解決できますか?
あなたは、復号データから 'UnicodeEncodeError'を得ることができません。あなたの問題は* encoding *です。 *完全なトレースバック*(あなたのポストにそれを含めます)を注意深く見てください。例外をスローする実際の行を指します。私はそれが 'print()'呼び出し、またはあなたのデータをバイトを必要とするものに書き出す何か他のものだと考えています(端末やコンソールにはバイトが必要なので、Pythonはあなたのためにエンコードします)。 –
また、*あなたがutf-8でエンコードされた文字列*を取得したいと考えると、バイトについてしか話すことができません。 UTF-8はエンコーディングであり、Unicodeテキストはその標準に従ったバイト単位で表されます。 Unicodeテキストはエンコードされていませんが、UTFのようなものではありません。 –
あなたは正しいと思います。 'r.text'を' print() 'メソッドで使っていないときだけです。エラーはありません。しかし、私はサーバーからの応答を見ることができません。 –