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,

Другие вопросы по тегам