今天修改原來的站點,有幾個session和cookies亂碼問題,而後又好好看了一下關於編碼這塊的內容。web
大概是:登陸處,用session記錄了一點中文內容。而後cookies也記錄了一點中文內容,取出來之後一下session亂碼一下cookie亂碼數組
翻代碼查了一下代碼,在統一設置cookies的時候,使用了 Server.UrlEncode ,可是發現,登陸後cookies取出來是亂碼,cookie
而後換爲 HttpUtility.UrlEncode 則不亂碼。session
猜想這兩個方法默認用的編碼格式不同,後來觀察網頁發現,登陸處居然是gb2312而首頁調用cookies的地方是utf-8 醉了,後來發現是這個文件夾下單獨有一個web.config設定了編碼,也不知道當初爲何這樣子作。。。單獨文件夾還設置單獨編碼。估計是由於拷貝過去沒刪除。。。。按道理整站不該該是統一一個編碼嗎?學習
而後猜測他們默認編碼方式不同後,百度之,以下文章所說,果真是默認編碼方式不一,遂改之,而後整改了全部地方單獨設置編碼的。再也不亂碼。編碼
1、HttpUtility.UrlEncode 方法code
一、public static string UrlEncode(byte[])對象
將字節數組轉換爲已編碼的 URL 字符串。utf-8
二、public static string UrlEncode(string)字符串
對 URL 字符串進行編碼。
三、public static string UrlEncode(string, Encoding)
使用指定的編碼對象對 URL 字符串進行編碼。
四、public static string UrlEncode(byte[], int, int)
從數組中的指定位置開始一直到指定的字節數爲止,將字節數組轉換爲 URL 編碼的字符串。
2、Server.UrlEncode方法
一、public string UrlEncode(string)
對字符串進行 URL 編碼,並返回已編碼的字符串。
二、public void UrlEncode(string, TextWriter)
URL 對字符串進行編碼,並將結果輸出發送到 TextWriter 輸出流。
3、Server.UrlEncode與HttpUtility.UrlEncode的區別
一、HttpUtility.UrlEncode,HttpUtility.UrlDecode是靜態方法,而Server.UrlEncode,Server.UrlDecode是實例方法。
二、Server是HttpServerUtility類的實例,是System.Web.UI.Page的屬性。
三、Server.UrlEncode的編碼方式是按照本地程序設置的編碼方式進行編碼的,而HttpUtility.UrlEncode是默認的按照utf-8格式進行編碼的,若是須要指定HttpUtility.UrlEncode的編碼方式,則須要:HttpUtility.UrlEncode("學習也休閒", Encoding.GetEncoding("gb2312"));
四、二者都會以下轉換字符:空格會被轉換爲加號、非字母數字字符會被轉換爲他們的十六進制表現形式。