Как закодировать имя файла UTF8 для HTTP-заголовков? (Python, Django)

Отчасти "да".

Просто загрузка iPhone SDK (это легко и свободно) и проверяют эмулятор, который является там. Вы будете видеть, удовлетворяет ли это Вашим потребностям или нет. Эмулятор не показателен из реальной аппаратной производительности, нет никакого сенсорного входа, некоторые причуды могли бы отличаться, некоторые вещи не могут работать, и т.д.

45
задан Chris Ciesielski 1 September 2009 в 10:00
поделиться

3 ответа

Это ответ на часто задаваемые вопросы.

Нет совместимого способа сделать это. Некоторые браузеры реализуют проприетарные расширения (IE, Chrome), другие - RFC 2231 (Firefox, Opera).

См. Тестовые примеры на http://greenbytes.de/tech/tc2231/ .

Обновление: по состоянию на ноябрь 2012 года все текущие настольные браузеры поддерживают кодировку, определенную в RFC 6266 и RFC 5987 (Safari> = 6, IE> = 9, Chrome, Firefox, Opera, Konqueror).

36
ответ дан 26 November 2019 в 21:04
поделиться

Не отправлять имя файла в Content-Disposition. Невозможно заставить параметры заголовка, отличные от ASCII, работать в кросс-браузере (*).

Вместо этого отправьте просто «Content-Disposition: attachment» и оставьте имя файла в виде строки UTF-8 с кодировкой URL в конце (PATH_INFO) часть вашего URL-адреса, которую браузер может выбрать и использовать по умолчанию. URL-адреса UTF-8 обрабатываются браузерами гораздо надежнее, чем все, что связано с Content-Disposition.

(*: на самом деле нет даже текущего стандарта, который говорит, как это должно быть сделано как отношения Между RFC 2616, 2231 и 2047 они довольно дисфункциональны, что Джулиан пытается прояснить на уровне спецификаций. Последовательная поддержка браузеров находится в далеком будущем.)

31
ответ дан 26 November 2019 в 21:04
поделиться

Хак:

if (Request.UserAgent.Contains("IE"))
{
  // IE will accept URL encoding, but spaces don't need to be, and since they're so common..
  filename = filename.Replace("%", "%25").Replace(";", "%3B").Replace("#", "%23").Replace("&", "%26");
}
-1
ответ дан 26 November 2019 в 21:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: