Вопрос

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

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

Это производит следующую ссылку: http: // localhost: 1855 / Главная / О нас /% C3% 96 sterreich

Я хочу ссылку, которая выглядит так - localhost: 1855 / Главная / О / тельзере

Я пытался.

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

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

Это было полезно?

Решение

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

Ваш код правильный, как оно не требуется явного 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 без проблем. Т.е. не декодирует «специальные» символы Unicode в адресной строке.

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

Другие советы

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

2.2. URL Character Encoding Issues

URLs are sequences of characters, i.e., letters, digits, and special

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

In most URL schemes, the sequences of characters in different parts of a

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

In addition, octets may be encoded by a character triplet consisting of

Персонаж «%», а затем два шестнадцатеричных цифры (от «0123456789ABCDEF»), которые образуют шестнадцатеричное значение октета. (Символы «ABCDEF» также могут быть использованы в шестнадцатеричных кодировках.)

Octets must be encoded if they have no corresponding graphic

Персонаж в виде закодированного набора символов US-ASCII, если использование соответствующего символа небезопасна, или если соответствующий символ зарезервирован для некоторой другой интерпретации в рамках определенной схемы URL.

No corresponding graphic US-ASCII:

URLs are written only with the graphic printable characters of the

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

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

Положил бы сгенерированную ссылку внутри <a>, С помощью текста ссылки некодируемая строка, не быть достаточно хорошей? Это все равно выглядело бы плохо в поле URL браузера, но ваш интерфейс будет немного красивее.

Кроме того, в Firefox в любом случае, URL-адрес, показанный в моем полосе состояния, когда мы наведите курсор на вашу «уродливую» ссылку, показывает донечную версию, поэтому она также будет хорошо выглядеть там.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top