1. 程式人生 > >關於Server.UrlPathEncode和Server.UrlEncode的區別

關於Server.UrlPathEncode和Server.UrlEncode的區別

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)