python - “latin-1”编解码器无法编码字符
问题描述
我的代码适用于英文文本,但不适用于俄语 search_text。我该如何解决?
错误文本
UnicodeEncodeError:“latin-1”编解码器无法对位置 41-46 中的字符进行编码:正文(“Москва”)不是有效的 Latin-1。如果您想以 UTF-8 编码发送它,请使用 body.encode('utf-8')。
我的代码
import requests
# search_text = "London" # OK: for english text
search_text = "Москва" # ERROR: 'latin-1' codec can't encode characters in position 41-46: Body ('Москва')
headers = {
'cookie': 'bci=6040686626671285074; _statid=a741e249-8adb-4c9a-8344-6e7e8360700a; viewport=762; _hd=h; tmr_lvid=ea50ffe34e269b16d061756e9a17b263; tmr_lvidTS=1609852383671; AUTHCODE=VCmGBS9d9sIxDnxN-hzApvPxPoLNADWCZLYyW8JOTcolv2dJjwH7ALYd8dNP9ljxZZuLvoKsDXgozEUt-PjSwXYEDt4syizx1I2LS58gb49kCFae-5uIap--mtLsff2ZqGbFqK5r7buboZ0_3; JSESSIONID=adca48748b8f0c58a926f5e4948f42c0c0aa9463798a9240.1f3566ed; LASTSRV=ok.ru; msg_conf=2468555756792551; TZ=6; _flashVersion=0; CDN=; nbp=; tmr_detect=0%7C1609852395541; cudr=0; klos=0; tmr_reqNum=4; TZD=6.200; TD=200',
}
data = '''{\n "id": 24,\n "parameters": {\n "query": "''' + search_text + '''"\n }\n}'''
response = requests.post('https://ok.ru/web-api/v2/search/suggestCities', headers=headers, data=data)
json_data = response.json()
print(json_data['result'][0]['id'])
我试过了
city_name = city_name.encode('utf-8')
但收到TypeError: must be str, not bytes
解决方案
在发布请求之前,尝试在创建数据变量的行之后添加它
data=data.encode() #will produce bytes object encoded with utf-8
推荐阅读
- php - 如何跟踪倒数计时器并存储时间以备后用
- javascript - 如何使用 jQuery 在表格行单击时过滤表格中的数据?
- python - 无法安装深度动画师
- sql - 如何从包含 postgresql 的所有列的表中查找 Min 和 Max 行
- php - 文本框未填充来自 URL 的数据?
- julia - Julia 惯用的捕捉异常的方式,除了中断?
- c# - 上传 30 MB 以上 ASP.NET Core 3.1 时出现 504 错误
- powerbi - Power BI 视觉对象中的时间框架(又名 Sprint)字段出现故障
- django - 有没有办法用组件构建页面
- python - 使用 for 循环在列表中搜索值并打印搜索结果