Процент закодированных символов в 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