HttpUtility.UrlEncode 和Server.UrlEncode的區別,記錄記錄,被亂碼搞暈頭了。。。。。


今天修改原來的站點,有幾個session和cookies亂碼問題,然后又好好看了一下關於編碼這塊的內容。

大概是:登錄處,用session記錄了一點中文內容。然后cookies也記錄了一點中文內容,取出來以后一下session亂碼一下cookie亂碼

翻代碼查了一下代碼,在統一設置cookies的時候,使用了 Server.UrlEncode ,但是發現,登錄后cookies取出來是亂碼,

然后換為 HttpUtility.UrlEncode 則不亂碼。

猜測這兩個方法默認用的編碼格式不一樣,后來觀察網頁發現,登錄處竟然是gb2312而首頁調用cookies的地方是utf-8 醉了,后來發現是這個文件夾下單獨有一個web.config設定了編碼,也不知道當初為什么這樣子做。。。單獨文件夾還設置單獨編碼。估計是因為拷貝過去沒刪除。。。。按道理整站不應該是統一一個編碼嗎?

然后猜想他們默認編碼方式不一樣后,百度之,如下文章所說,果然是默認編碼方式不一,遂改之,然后整改了所有地方單獨設置編碼的。不再亂碼。

 

一、HttpUtility.UrlEncode 方法

 

1、public static string UrlEncode(byte[])

將字節數組轉換為已編碼的 URL 字符串。

 

2、public static string UrlEncode(string)

對 URL 字符串進行編碼。
 

3、public static string UrlEncode(string, Encoding)

使用指定的編碼對象對 URL 字符串進行編碼。
 

4、public static string UrlEncode(byte[], int, int)

從數組中的指定位置開始一直到指定的字節數為止,將字節數組轉換為 URL 編碼的字符串。
 

 

二、Server.UrlEncode方法

 

1、public string UrlEncode(string)

對字符串進行 URL 編碼,並返回已編碼的字符串。
 

2、public void UrlEncode(string, TextWriter)

URL 對字符串進行編碼,並將結果輸出發送到 TextWriter 輸出流。
 

 

三、Server.UrlEncode與HttpUtility.UrlEncode的區別

 

1、HttpUtility.UrlEncode,HttpUtility.UrlDecode是靜態方法,而Server.UrlEncode,Server.UrlDecode是實例方法。


2、Server是HttpServerUtility類的實例,是System.Web.UI.Page的屬性。

3、Server.UrlEncode的編碼方式是按照本地程序設置的編碼方式進行編碼的,而HttpUtility.UrlEncode是默認的按照utf-8格式進行編碼的,如果需要指定HttpUtility.UrlEncode的編碼方式,則需要:HttpUtility.UrlEncode("學習也休閑", Encoding.GetEncoding("gb2312"));

4、兩者都會如下轉換字符:空格會被轉換為加號、非字母數字字符會被轉換為他們的十六進制表現形式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM