首页 > 解决方案 > Python request.header unicode 字符错误

问题描述

以下代码给出了错误:

headers = {'Path': '00ab536d1c45d0e21f2726c70ca78a21_كلمة سمو.docx',
           'IssueNo': '', 'IssueDate': '2020-01-27', 'IssueYear': '',
           'CountryName': '', 'DocSource': '66',
           'FileName': '00ab536d1c45d0e21f2726c70ca78a21_كلمة  الأردن.docx',
           'DocNumber': '', 'CreateDMSDoc': '1',
           'apiKey': '4B30A7BB-05E8-4F7D-A195-093CFA578995'}

response = requests.post('http://localhost/FileUploadService/Api/UploadtStream', files=file, headers=headers)

错误是:

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 33-36: ordinal not in range(256)

我该如何解决?

标签: pythonunicodepython-requestsruntime-error

解决方案


您需要将字符集设置为 utf-8 或适当的阿拉伯字符集。拉丁语不能编码阿拉伯字符:

headers={'Path': '00ab536d1c45d0e21f2726c70ca78a21_كلمة سمو الوزير منتدى المستقبل الأردن.docx'.encode('utf-8'),
'IssueNo': '', 'IssueDate': '2020-01-27', 'IssueYear': '', 'CountryName': '',
'DocSource': '66',
'FileName': '00ab536d1c45d0e21f2726c70ca78a21_كلمة سمو الوزير منتدى المستقبل الأردن.docx'.encode('utf-8'),
'DocNumber': '', 'CreateDMSDoc': '1',
'apiKey': '4B30A7BB-05E8-4F7D-A195-093CFA578995'}

您需要将每个阿拉伯字符串具体编码为 utf-8。


推荐阅读