ASP.NET HTML相關編碼方法

ASP.NET 針對HTML相關的編碼,可以分成網址編碼、網頁內容編碼兩部分

這裡分別記錄這些常見的編碼方式,提供參考

[網址編碼]

URL Encode - HttpUtility.UrlEncode

HttpUtility.UrlEncode 可以將字串編碼成 URL 可讀取得模式

string url_text = "http://adon988.logdown.com/這是測試 this i stest";
Response.Write(url_text); //http://adon988.logdown.com/url ASP.NET HTML相關編碼方法
string url_encode = HttpUtility.UrlEncode(url_text);
Response.Write(url_encode);//輸出: http%3a%2f%2fadon988.logdown.com%2furl+ASP.NET+HTML%e7%9b%b8%e9%97%9c%e7%b7%a8%e7%a2%bc%e6%96%b9%e6%b3%95

附註說明:

在 ASP.NET 還有提供另一個 HttpUtility.UrlEncodeUnicode 編碼的方法

若網址有包含中文或多國語言的情況,可能會有解碼錯誤問題,不建議使用

URL Decode - HttpUtility.UrlDecode

HttpUtility.UrlEncode 可以將 URL編碼字串 進行解碼,恢復成一般文字

string urlencode_string = "http%3a%2f%2fadon988.logdown.com%2furl+ASP.NET+HTML%e7%9b%b8%e9%97%9c%e7%b7%a8%e7%a2%bc%e6%96%b9%e6%b3%95";
string urldecode_txt = HttpUtility.UrlDecode(urlencode_string);//輸出: http://adon988.logdown.com/url ASP.NET HTML相關編碼方法
Response.Write(urldecode_txt + "<br>");

[內容編碼]

HTML 標籤編碼 - HttpUtility.HtmlEncode

HttpUtility.HtmlEncode 可以將HTML標籤進行編碼成網頁符號字元

例如,<a>

CVT2HUGO: HTML屬於超連結標籤,經過內容編碼則轉成一般文字
string htmlencode_txt = HttpUtility.HtmlEncode("<a href='#'>This is Link</a>");
Response.Write(htmlencode_txt);

輸出

<a href='#'>This is Link</a>

附註說明:

在 ASP.NET 有另一個功能類似的 HttpUtility.HtmlAttributeEncode,僅適用於雙引號內的屬性、&、< 等字元進行轉換,若屬性是用單引號,則不適用。目前不推薦再使用這個方式。

HTML 標籤解碼 - HttpUtility.HtmlDecode

HttpUtility.HtmlEncode 可以將HTML標籤進行編碼成網頁符號字元

例如,<a>

CVT2HUGO: HTML屬於超連結標籤,經過內容編碼則轉成一般文字
//編碼字串
string htmlencode_txt = HttpUtility.HtmlEncode("<a href='#'>This is Link</a>");
//解碼字串
string htmldecode_txt = HttpUtility.HtmlDecode(htmlencode_txt);
Response.Write(htmldecode_txt);

輸出

This is Link <----有作用的超連結