ASP.NET URL MVC декодирует

У меня есть действие как это:

<%=Html.ActionLink("My_link", "About", "Home", new RouteValueDictionary { 
    { "id", "Österreich" } }, null)%>

Это производит следующую ссылку: http://localhost:1855/Home/About/%C3%96sterreich

Я хочу ссылку, которая похожа на это - localhost:1855/Home/About/Österreich

Я попробовал.

Server.HtmlDecode("Österreich")
HttpUtility.UrlDecode("Österreich") 

Ни один, кажется, не помогает. Что еще я могу попытаться получить свой желаемый результат?

10
задан Jason Berkan 9 April 2010 в 19:49
поделиться

4 ответа

Я думаю, что это проблема вашего браузера (IE).

Ваш код и так верен, явного кодирования UrlEncoding не требуется.

<%=Html.ActionLink("My_link", "About", "Home", new RouteValueDictionary { 
{ "id", "Österreich" } }, null)%>

В ASP.NET MVC нет ничего плохого. См. URL-адреса Unicode в Интернете, например http://he.wikipedia.org/wiki/%D7%9B%D7%A9%D7%A8%D7%95%D7%AA в IE и в браузере, который правильно обрабатывает Unicode в URL-адресах. .

Например. chrome без проблем отображает URL-адреса Unicode. IE не декодирует "специальные" символы Юникода в адресной строке.

Это только косметическая проблема.

4
ответ дан 4 December 2019 в 02:50
поделиться

Я думаю, что ваше желание использовать URL без urlencode вполне оправдано, но я не думаю, что инструменты действительно облегчают это.

1
ответ дан 4 December 2019 в 02:50
поделиться

Согласно RFC 1738 Uniform Resource Locators (URL) , поддерживается только US-ASCII, все остальные символы должны быть закодированы.

 2.2. Проблемы с кодировкой символов URL-адресов 
 
URL-адреса представляют собой последовательности символов, то есть букв, цифр и специальных символов 
 

. URL-адреса могут быть представлены различными способами: например, чернилами на бумаге или последовательностью октетов в кодированном наборе символов . Интерпретация URL-адреса зависит только от идентичности используемых символов .

 В большинстве схем URL-адресов последовательности символов в различных частях URL-адреса 
 

используются для представления последовательностей октетов , используемых в Интернет-протоколах.Например, в схеме ftp имя хоста , имя каталога и имена файлов представляют собой такие последовательности октетов , представленные частями URL-адреса. В этих частях октет может быть представлен символом, который имеет этот октет в качестве своего кода в кодированном наборе символов US-ASCII [20] .

 Кроме того, октеты могут быть закодированы тройкой символов, состоящей из 
 

символа "%", за которым следуют две шестнадцатеричные цифры (от "0123456789ABCDEF" ), который формирует шестнадцатеричное значение октета . (Символы abcdef также могут использоваться в шестнадцатеричной кодировке.)

 Октеты должны быть закодированы, если они не имеют соответствующего графического символа 
 

в США. -ASCII-кодированный набор символов , если использование соответствующего символа небезопасно, или , если соответствующий символ зарезервирован для некоторой другой интерпретации {{1 }} внутри конкретной схемы URL.

 Нет соответствующей графики. US-ASCII: 
 
URL-адреса записываются только с использованием графических печатных символов из набора символов 
 

US-ASCII. Шестнадцатеричные октеты 80-FF не используются в US-ASCII, а шестнадцатеричные октеты 00-1F и 7F представляют собой управляющие символы; они должны быть закодированы.

2
ответ дан 4 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

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