程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> Server對象之HtmlEncode和UrlEncode的用法

Server對象之HtmlEncode和UrlEncode的用法

編輯:關於C#

昨天研究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&amp;lt%3bp&amp;gt%3b" id="form1">

2.3地址欄中

http://localhost:8690/WebSite1/Default2.aspx?Name=DK51700中繼站&lt;p&gt;

2.4 HtmlDecode後輸出

DK51700中繼站

們主要對比下兩者在地址欄中的不同“&lt;p&gt;” 結果就是把<>用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 值”

為什麼了,又是一個問題。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved