有個奇怪的問題:登陸頁面中使用Cookie存值,Cookie中要存中文漢字。代碼在本地調試,一切OK,漢字也能順利存到Cookie和從Cookie中讀出,可是放到服務器上無論用了,好好的漢字成了亂碼,本來覺得是服務器環境和本地的不同,後來一想應該不對,由於代碼放服務器上以後再訪問登陸頁面會和服務器交互,交互必然要有網絡傳輸,而Cookie是存在本地的,就是在服務器向本地寫Cookie的時候,網絡的編碼格式影響了漢字的正常存儲致使漢字亂碼。順着這個思路改代碼,而後測試,經過!web
可是新問題來了,在給漢字編碼的時候,經常使用的有這兩種:HttpUtility.UrlEncode 和 Server.UrlEncode,雖然編碼/解碼成對使用沒問題,可是畢竟是兩種方法,總該是有區別的,網上查了一下,區別以下:服務器
第一:引用:網絡
一、HttpUtility.UrlEncode,HttpUtility.UrlDecode是靜態方法,而Server.UrlEncode,Server.UrlDecode是實例方法。
二、Server是HttpServerUtility類的實例,是System.Web.UI.Page的屬性。
三、用HttpUtility.UrlEncode編碼後的字符串和用Server.UrlEncode進行編碼後的字符串對象不同測試
Server.UrlEncode 能夠根據你頁面定義好的編碼方式進行編碼。編碼
而 HttpUtility.UrlDecode則默認以utf8來編碼。 否則你須要本身指定編碼方式:調試
Encoding gb2312= Encoding.GetEncoding("gb2312");code
string v5= HttpUtility.UrlEncode("中文漢字", gb2312);對象
而 Server.UrlDecode則默認調用web.config中<globalization />節點中指定來編碼字符串
<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" />string
string v3= Server.UrlEncode("中文漢字");
這兩種方式,在不使用web.config默認的編碼方式時,HttpUtility.UrlEncode比較好用,可是不方便;若是是使用web.config統一編碼,則Server.UrlDecode比較好。另外就是,若是是下載文件而定義編碼方式,最好使用HttpUtility.UrlEncode