URL中的编码字符百分比在浏览器中显示错误

时间:2012-12-18 19:47:32

标签: .net html url-encoding idn

我遇到包含特殊字符的网址问题。如果我使用NavigateUrl='Eval("website")',呈现的HTML就是:

<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>

我尝试将元标记中的字符集设置为UTF-8iso-8859-1,但它没有帮助,我也不认为它与此有关。

尝试点击此链接:http://www.v%c3%a4rnamo.nu,您将得到相同的回复。

我还能尝试其他什么吗?

3 个答案:

答案 0 :(得分:1)

你可以试试punycode,它会给http://www.xn--vrnamo-bua.nu。我使用http://www.charset.org/punycode.php创建了这个,声称提供PHP代码来执行此转换,如果有帮助的话。

答案 1 :(得分:0)

尝试使用HttpUtility.HtmlDecode(Eval("website"))代替HtmlEncode

答案 2 :(得分:0)

我实际上现在已经开始工作了。我在此LINK

处使用了代码

在我的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>

点击此链接将正确打开页面。