昨天研究URL的傳值問題時,我就在思考HtmlEncode和UrlEncode的用法區別是什麼,查了些資料,它們的區別是這樣的。(我們接著昨天的例子來描述這個問題,大家可以參看下我的前一篇“URL的傳遞字符串問題小研究”)。
HtmlEncode 方法對指定的字符串應用 HTML 編碼。
語法
Server.HtmlEncode( string )
參數
string
指定要編碼的字符串。
1.1示例
string name = "DK51700中繼站";
注:(我們為了簡單,去掉了昨天的例子裡字符串中的“+”)
Code
string url;
string name;
url = "Default2.aspx?Name=";
name = "DK51700中繼站";
HyperLink1.NavigateUrl = url + Server.HtmlEncode(name);
1.2頁面源代碼中
<form name="form1" method="post" action="Default2.aspx?Name=DK51700%u4e2d%u7ee7%u7ad9" id="form1">
1.3地址欄中
http://localhost:8690/WebSite1/Default2.aspx?Name=DK51700中繼站
1.4 HtmlDecode後輸出
DK51700中繼站
注意 我們看到地址欄中的Name的內容,好像沒變化。我們加個HTML的符號呢?
2.1示例
string name = "DK51700中繼站<p>";
2.2頁面源代碼中
<form name="form1" method="post" action="Default2.aspx?Name=DK51700%u4e2d%u7ee7%u7ad9&lt%3bp&gt%3b" id="form1">
2.3地址欄中
http://localhost:8690/WebSite1/Default2.aspx?Name=DK51700中繼站<p>
2.4 HtmlDecode後輸出
DK51700中繼站
們主要對比下兩者在地址欄中的不同“<p>” 結果就是把<>用HTML表述了。恩,我們還注意到了字符串中的“<p>”不見了,為什麼?這又是個新問題了。
二.UrlEncode方法將使用 URL 編碼規則,包括轉義字符,應用到指定的字符串。
語法
Server.UrlEncode( string )
參數
string
指定要編碼的字符串。
1.1示例
string name = "DK51700中繼站";
1.2頁面源代碼中
<form name="form1" method="post" action="Default2.aspx?Name=DK51700%u4e2d%u7ee7%u7ad9" id="form1">
1.3地址欄中
http://localhost:8690/WebSite1/Default2.aspx?Name=DK51700%d6%d0%bc%cc%d5%be
1.4 UrlDecode後輸出
DK51700中繼站
可以看到在地址欄中,字符串已經按照URL的規則編碼了。
我們接著在字符串裡加個HTML符號,會發生什麼事呢?會是件有趣的事。
2.1示例
string name = "DK51700中繼站<p>";
當我點連接時頁面直接報錯
“從客戶端(Name="DK51700中繼站<p>")中檢測到有潛在危險的 Request.QueryString 值”
為什麼了,又是一個問題。