Cookie存中文亂碼的問題


有個奇怪的問題:登錄頁面中使用Cookie存值,Cookie中要存中文漢字。代碼在本地調試,一切OK,漢字也能順利存到Cookie和從Cookie中讀出,但是放到服務器上不管用了,好好的漢字成了亂碼,原本以為是服務器環境和本地的不一樣,后來一想應該不對,因為代碼放服務器上之后再訪問登錄頁面會和服務器交互,交互必然要有網絡傳輸,而Cookie是存在本地的,就是在服務器向本地寫Cookie的時候,網絡的編碼格式影響了漢字的正常存儲導致漢字亂碼。順着這個思路改代碼,然后測試,通過!

但是新問題來了,在給漢字編碼的時候,常用的有這兩種:HttpUtility.UrlEncode 和 Server.UrlEncode,雖然編碼/解碼成對使用沒問題,但是畢竟是兩種方法,總該是有區別的,網上查了一下,區別如下:

第一:引用:

1、HttpUtility.UrlEncode,HttpUtility.UrlDecode是靜態方法,而Server.UrlEncode,Server.UrlDecode是實例方法。
2、Server是HttpServerUtility類的實例,是System.Web.UI.Page的屬性。
3、用HttpUtility.UrlEncode編碼后的字符串和用Server.UrlEncode進行編碼后的字符串對象不一樣

 

Server.UrlEncode 可以根據你頁面定義好的編碼方式進行編碼。

而 HttpUtility.UrlDecode則默認以utf8來編碼。 不然你需要自己指定編碼方式:

Encoding gb2312= Encoding.GetEncoding("gb2312");

string v5= HttpUtility.UrlEncode("中文漢字", gb2312);

 

而 Server.UrlDecode則默認調用web.config中<globalization />節點中指定來編碼

<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" />

string v3= Server.UrlEncode("中文漢字");

 

這兩種方式,在不使用web.config默認的編碼方式時,HttpUtility.UrlEncode比較好用,但是不方便;如果是使用web.config統一編碼,則Server.UrlDecode比較好。另外就是,如果是下載文件而定義編碼方式,最好使用HttpUtility.UrlEncode


免責聲明!

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



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