C# UrlEncode, но разрешить определенные наборы символов
У меня есть приложение, где пользователи могут загружать файлы, имя которых может содержать нелатинские символы, такие как кириллица или китайский язык. Например:
http://localhost/привет мир.html
Затем мне нужно иметь возможность URL-кодировать имя файла для недопустимых и / или специальных символов, таких как пробелы. Когда я URL-кодировать URI следующим образом:
string uri = "http://localhost/привет мир.html";
string encoded = HttpUtility.UrlPathEncode(uri);
Console.WriteLine(encoded);
Что дает мне следующий результат:
http://localhost/%d0%bf%d1%80%d0%b8%d0%b2%d0%b5%d1%82%20%d0%bc%d0%b8%d1%80.html
Что я действительно хочу, так это:
http://localhost/привет%20мир.html
Большинство браузеров поддерживают этот формат, и мои пользователи, которые в данном случае являются русскими, должны иметь возможность видеть более удобный для отображения URL в своем языке и наборе символов.
Есть ли способ URL-кодировать URI и не кодировать определенные наборы символов?
1 ответ
Вам нужно будет создать свой собственный HttpEncoder
,
Класс HttpEncoder - раздел " Замечания " объясняет, как настроить ваш веб-сайт для использования вашего HttpEncoder
по умолчанию в HttpUtility
, HttpServerUtility
, а также HttpResponseHeader
,