2017年7月13日 星期四

轉碼的問題

最近遇到了轉碼的問題 以此紀錄以下幾種解法

這兩種是我在debug時用到的寫法
解密
1. HttpUtility.UrlDecode("字串或變數", System.Text.Encoding.GetEncoding("big5"));
2. Sever,UrlDecode("URL")

加密
 1.HttpUtility.Encode("字串或變數", System.Text.Encoding.GetEncoding("big5"))
2. Sever,UrlDecode("URL")

需要注意的几点(兩者差異如下)
1、HttpUtility.UrlEncode,HttpUtility.UrlDecode是静态方法,而Server.UrlEncode,Server.UrlDecode是实例方法。
2、Server是HttpServerUtility类的实例,是System.Web.UI.Page的属性。
3、用HttpUtility.UrlEncode编码后的字符串和用Server.UrlEncode进行编码后的字符串对象不一样


HttpUtility.UrlEncode是默認的(預設值)按照.net的utf-8格式進行編碼的 

Server.UrlEncode的編碼方式是按照本地程式設置的編碼方式進行編碼的


以下是常見的加解密方法
  • HttpUtility.UrlEncode
    URL 編碼方式會將 URL 中不允許的字元轉換為相等的字元實體。
  • HttpUtility.UrlDecode
    剛好是 UrlEncode 的相反,將透過 UrlEncode 過的字串解碼成原本的字串。
  • HttpUtility.UrlEncodeUnicode
    等於 JavaScript 的 escape() 方法,用 %uXXXX 的方式表達。
  • HttpUtility.UrlPathEncode
    HttpUtility.UrlPathEncode 方法不會對下列字元進行編碼:":"、"/"、";"、"?" 以及任何可見的 ASCII 字元都不會被編碼,另外網址中的 QueryString (網址中 ? 之後的所有字元) 也都不會被編碼。
    這方法通常用於對網址中「目錄名稱」與「檔名」編碼!
  • HttpUtility.HtmlEncode
    將 HTML 文件中不允許出現的字元進行編碼,通常會編碼 "<"、">"、"&" 等字元。
  • HttpUtility.HtmlDecode
    剛好是 HtmlEncode 的相反,將透過 HtmlEncode 過的字串解碼成原本的字串。
JavaScript 相關的 UrlEncode 與 HtmlEncode 函數
  • escape
    會以 Unicode 方式進行編碼,用 %uXXXX 的方式呈現編碼的格式。
    所有的空格、標點符號、重音字元以及其他非 ASCII 字元均以 %xx 編碼取代,其中的 xx 就等於表示該字元的十六進位數字。
    值大於 255 的字元,則以 %uxxxx 格式儲存。
    與 encodeURI、encodeURIComponent 不相容
  • unescape
    將透過 escape 函數編碼過的字串解碼。
  • encodeURI
    encodeURI 方法不會對下列字元進行編碼:":"、"/"、";"、"?"、"="、"&"。
    這個函數的目的在於將一個現有的網址,對各個不同的片段進行編碼,讓現有的網址更加標準化。
  • decodeURI
    將透過 encodeURI 函數編碼過的字串解碼。

有些是網路上擷取下來或者是某些書上的資料 
若有問題請再告知我