前提
pythonで CSVを読んでOracle DBに登録したり、Oracle RestAPI を使い、ERPとOracle DBで受け渡しを行ったりしてります。
requests.post時に UnicodeEncodeErrorが発生してしまいます。
対応方法を教えていただきたいです。
実現したいこと
API操作(あるURLにrequests.post) してOracle ERP環境に情報登録をしたい
発生している問題・エラーメッセージ
File "c:\Users\XX\20220905\main_test.py", line 945, in main response = requests.post(url, data=json.dumps(json_data, indent=4, ensure_ascii=False), auth=HTTPBasicAuth(user, password), headers=headers) File "C:\Users\XX\Miniconda3\lib\http\client.py", line 168, in _encode raise UnicodeEncodeError( UnicodeEncodeError: 'latin-1' codec can't encode characters in position 66-78: Body ('レジ部') is not valid Latin-1. Use body 部') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8.
該当のソースコード
Python
1import requests 2import json 3 4#jsonのセットなど省略 5 6headers = {"content-type": "application/json; charset=utf-8"} 7# response = requests.post(url, json_data, headers=headers) 8response = requests.post(url, data=json.dumps(json_data, indent=4, ensure_ascii=False), headers=headers) 9response.encoding = response.apparent_encoding 10print(response.status_code) 11print(response.text) 12 13・utf-8で情報をPOSTしたい・ ( response.apparent_encoding=”UTF8") 14
試したこと
https://qiita.com/tmhknkmr12/items/0f5c3c6f6584933397f2
補足情報(FW/ツールのバージョンなど)
Python 3.9.12 Anaconda(Miniconda)
headers = {"content-type": "text/html; charset=utf-8"}
# utf-8でエンコードし、Str型にする
urlencode_post_data = urllib.parse.urlencode("{0}".format(json_data).replace("'", '"').encode("utf-8”), encoding="utf-8")
response2 = requests.post(url, urlencode_post_data, auth=HTTPBasicAuth(user, password), headers=headers)
などで送付すると結果が
ステータス 400
Unable to parse the provided payload ( 提供されたペイロードを解析できません
になってしまいます
情報の追記をこの欄にしないでください。
質問を編集しましょう。(紛らわしいです/紛れてしまいます)
了解しました

回答2件
あなたの回答
tips
プレビュー