Процент закодированных символов в URL дает ошибку в браузере

У меня проблема с URL, которые включают специальные символы. Визуализированный HTML, если я использую NavigateUrl='Eval("website")' это:

<a href="http://www.v%c3%a4rnamo.nu">www.värnamo.nu</a>

Если я попытаюсь закодировать это так NavigateUrl='<%# HttpUtility.HtmlEncode(Eval("website")) %>' Я получаю этот вывод, который тоже не работает.

<a href="http://www.v&/"288;rnamo.nu">www.värnamo.nu</a>

Я попытался установить charset в метатеге UTF-8 а также iso-8859-1, но это не помогло, и я не думаю, что это также имеет отношение к этому.

Попробуйте перейти по этой ссылке: http://www.xn--vrnamo-bua.nu/, и вы получите тот же ответ.

Что-нибудь еще я могу попробовать?

3 ответа

Решение

Я действительно получил это на работу сейчас. Я использовал код по этой ссылке

На моей странице aspx я использую это в свойстве NavigateUrl:

NavigateUrl='<%# idnMapping(Convert.ToString(Eval("website"))) %>'

Который вызывает функцию:

public static string idnMapping(string text) {
    System.Globalization.IdnMapping idn = new System.Globalization.IdnMapping();
    return idn.GetAscii(text);
}

Теперь, когда я вижу HTML, я вижу

<a href="http://xn--vrnamo-bua.nu">www.värnamo.nu</a>

И, нажав эту ссылку, вы откроете страницу правильно.

Вы можете попробовать Punycode, который дает http://www.xn--vrnamo-bua.nu/. Я сделал это, используя http://www.charset.org/punycode.php, который утверждает, что предлагает PHP-код для этого преобразования, если это поможет.

Попробуй использовать HttpUtility.HtmlDecode(Eval("website")) вместо HtmlEncode

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