Специальные символы заменены на URL - PullRequest
0 голосов
/ 21 февраля 2012

Я создаю динамический список продуктов для домашней страницы клиента и обнаружил очень раздражающую проблему в IE8.

URL-адреса продуктов имеют следующую структуру:

http://www.domain.com/language/category/product_name.aspx

Проблема возникает, когда я отображаю сайт на испанском языке, а категория содержит специальный символ "ñ": IE заменяет символ на "%c3%b1".

Следуя моему коду, я обнаружил, что URL созданы правильно, но когда сервер показывает страницу результатов, все URL, содержащие специальные символы, были заменены.

Страница aspx имеет элемент управления:

<asp:HyperLink ID="LinkTitle" runat="server">Product Name</asp:HyperLink>

и код класса присваивает значение элементу управления во время события ItemDataBound в ListView

Dim L_LinkTit As HyperLink    
Dim Link as String
L_LinkTit = LstView.FindControl("LinkTitle")

Link = "/" & Session("lang") & "/" & cat & "/" & product & ".aspx"
L_LinkTit.NavigateUrl = Link

Есть идеи, как решить эту проблему?

Ответы [ 2 ]

5 голосов
/ 21 февраля 2012

Это по замыслу.

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

Современные браузеры, поисковые системы и т. Д. Будут декодировать процент URL-адреса перед его показом (так, чтобы он выглядел лучше), но внутренне UTF-8 ñ всегда будет %c3%b1.IE8, по-видимому, этого не делает, поэтому, если вы хотите обслуживать правильные URL-адреса, в IE8 нет способа заставить их выглядеть красиво.

См. Unicode-символы в URL-адресах для справочной информации.

0 голосов
/ 21 февраля 2012

Наконец-то мне удалось решить проблему специальных символов. Я сделал некоторые изменения на сайте. Я заменил элемент управления asp HyperLink страницы aspx на

<a id="LinkTitle" runat="server">Product Name</a>

и код немного изменился

Dim ProdLNK As HtmlAnchor
Dim Link as String
ProdLNK = LstView.FindControl("LinkTitle")

Link = "/" & Session("lang") & "/" & cat & "/" & product & ".aspx"
ProdLNK.HRef = Link

Теперь IE8 обрабатывает все URL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...