首页 > 解决方案 > Python NLS http 编码

问题描述

我正在尝试使用国家语言支持 (NLS) 在我们的网页上进行一些集成测试。例如,我尝试发布一个页面,其表单包含 first_name 的值“Fréd”。

为此,我设置了 Python 3.7.3

import request

然后用数据做 requests.post {'first_name': "Fr\u00E9d"}

在某些时候,UTF-8 str 被翻译成字节,但那些没有被翻译成重音 e 代码。我挖掘了代码,归结为这个测试用例:

>>> "Fr\u00E9d"
'Fréd'
>>> "Fr\u00E9d".encode("utf-8")
b'Fr\xc3\xa9d'

w3schools 将 \xc3 列为带波浪号的拉丁大写字母 A,将 \xa9 列为版权符号。

假设这不是 Python 编码的问题,我应该如何在 Python 中编码这些 NLS 字符。

提前致谢。

标签: pythonutf-8python-requestspython-unicode

解决方案


我想我开始明白了。

因此,当我发送值为“Fréd”的值时,我的浏览器将其编码为(根据 Firefox 调试器)Fr%E9d。然后,Web 服务器似乎将其识别为 Fred。

"Fr\u00E9d" 被 requests/models.py 中的 .encode("utf-8") 翻译成 b'Fr\xc3\xa9d'。问题是我们的表单似乎只接受字符集=“ISO-8859-1”。

我猜python Requests 包不应该盲目地进行转换。但这有点超出了这个问题的范围。

感谢您清除此问题。


推荐阅读