Неправильная кодировка при получении аргумента get - PullRequest
0 голосов
/ 12 июня 2018

У меня есть 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 соответствует 'ç', как вы можете видеть там .

И так как% E7 декодируется с символом замены, я даже не могу использовать urllib.parse.unquote, чтобы вернуть мой 'ç' ...

Есть лиспособ получить необработанный аргумент или правильно декодированную строку?

1 Ответ

0 голосов
/ 12 июня 2018

Переключение кодировки запроса на latin-1 перед доступом к параметру вернуло мне правильно декодированную строку при локальном запуске вашего примера.

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

Однако я не могу сказать вам, почему этобыло бы, так как я бы предположил, что кодировка по умолчанию utf-8 будет обрабатывать этот конкретный символ.

...