2012-12-18 32 views
0

我遇到包含特殊字符的URL的問題。如果我使用NavigateUrl='Eval("website")'呈現的HTML是這樣的:URL中的百分比編碼字符在瀏覽器中給出錯誤

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

我嘗試設置在meta標籤的字符集,以UTF-8iso-8859-1,但它並沒有幫助,我不認爲它要麼是做些什麼。

請嘗試點擊此鏈接:http://www.v%c3%a4rnamo.nu,你會得到相同的迴應。

其他我可以試試嗎?

+1

第一個問題是什麼? – Musa

+0

如果我點擊任何鏈接,我會得到「未找到服務器」。無法在* www.v%c3%a4rnamo.nu *或* www.v &/"288; rnamo.nu *上找到服務器。瀏覽器中的文本看起來不錯,如果我按下輸入url字段,我可以瀏覽到服務器。 – Niklas

回答

0

事實上,我現在這個工作。我曾經在這個LINK

代碼在我的aspx頁面我在NavigateUrl屬性使用此:

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

它調用功能:當我查看HTML我看到

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

現在

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

然後點擊此鏈接將正確打開頁面。

1

您可以試試punycode,它給出http://www.xn--vrnamo-bua.nu。我使用http://www.charset.org/punycode.php做了這個,聲稱提供PHP代碼來完成這個轉換,如果有幫助的話。

+0

究竟如何使用它?你想讓我把PHP和.NET結合起來嗎? – Niklas

+0

不......但我提到的頁面鏈接到一個帶有下載鏈接的頁面,該鏈接指向一個包含可以轉換爲.NET的PHP類的zip文件。主要是我建議可以編碼特殊字符的格式。我不知道任何內置.NET的內容是否可以進行此轉換,因此從其他來源獲取算法或代碼似乎是有保證的。 – prprcupofcoffee

+0

.NET中有使用punycode的IdnMapping:http://blog.tjitjing.com/index.php/2008/06/punycode-in-vbnet-for-idn-domains.html。由於瀏覽器無法識別轉換的內容,因此無法正常工作。 – Niklas

0

嘗試使用HttpUtility.HtmlDecode(Eval("website"))代替HtmlEncode

+0

仍生成相同的URL:** http://www.v%c3%a4rnamo.nu** – Niklas

+0

如果您在.NET 4.0上運行,則可以嘗試WebUtility.HtmlDecode –