關於Server.UrlPathEncode和Server.UrlEncode的區別
阿新 • • 發佈:2019-02-18
Server.UrlPathEncode預設使用的是utf-8編碼而Server.UrlEncode預設為系統預設編碼(一般是gb2312)
Server.UrlDecode預設使用系統編碼解碼。所以這裡容易發生路徑解碼成亂碼的問題。
Response.Write(Server.UrlDecode(Server.UrlPathEncode("中文")) &"<hr>")
Response.Write(HttpUtility.UrlDecode(Server.UrlPathEncode("中文"), Encoding.UTF8) &"<hr>")
解決辦法: 解碼的地方使用utf-8編碼。HttpUtility.UrlDecode(Server.UrlPathEncode(String ), Encoding.UTF8);
或者編碼的地方使用Server.UrlEncode(),編解碼的預設編碼方式都用gb2312;
URL編碼:
System.Web.HttpUtility.UrlEncode(string); Server.UrlEncode(string);
System.Web.HttpUtility.UrlPathEncode(string); Server.UrlPathEncode(string);
UrlEncode與UrlPathEncode編碼規範不一樣
比如: UrlEncode對整個URL進行編碼(即http://www.website.com/ 全部編碼)
UrlPathEncode對http://之後的內容進行編碼(即www.website.com)