检索 get 参数时编码错误

Wrong encoding when retrieving get argument

我有一个用 URL 编码的 url,即:/filebrowser/?cd=bank/fran%E7ais/essais

问题是如果我通过 :

检索参数
path = request.GET.get('relative_h', None)

我得到:

/filebrowser/?cd=bank/fran�ais/essais

而不是:

/filebrowser/?cd=bank/français/essais

或:

/filebrowser/?cd=bank/fran%E7ais/essais

然而,%E7 确实对应于 'ç',如您所见there

并且由于 %E7 是用替换字符解码的,我什至不能使用 urllib.parse.unquote 来取回我的 'ç'...

有没有办法获取原始参数或正确解码的字符串?

在访问参数之前将请求编码切换为 latin-1 为我返回了正确解码的字符串,当 运行 您的示例在本地时。

request.encoding = 'latin-1'
path = request.GET.get('relative_h', None)

但是,我无法告诉您为什么会这样,因为我假设 utf-8 的默认编码会处理该特定字符。