日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Web亂碼折騰夠嗆小小妙招輕松搞定

Web數(shù)據(jù)提交有兩種方法:GET 和 POST。關(guān)于這兩種方法的介紹,請看這里:Http之Get/Post請求區(qū)別。我在這里要介紹的是如何在程序中獲取HTTPRequest數(shù)據(jù),并成功解決編碼不同時所引起亂碼的問題。

創(chuàng)新互聯(lián)公司是一家專注于成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計,合川網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:合川等地區(qū)。合川做網(wǎng)站價格咨詢:13518219792

現(xiàn)在我們開始,先看一段HTML代碼:

 
 
 
  1. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  2.  
  3.  
  4.  
  5. 無標(biāo)題文檔 
  6.  
  7.  
  8.  
  9.      
  10.         名稱: 
  11.          
  12.         年齡: 
  13.          
  14.          
  15.          
  16.      
  17.  
  18.  
  19.  

在這個HTML文件中,我們使用的編碼是GB2312,F(xiàn)orm表單中包含name和age兩個數(shù)據(jù)。首先將method設(shè)置為GET方法:

 
 
 
  1.  

另外我們再新建一個Web應(yīng)用程序,并在本地新建一個站點,將端口設(shè)置為9000,添加一個頁面,名稱為WebForm1.aspx,也就是上面Form表單中的action所指向的地址http://localhost:9000/WebForm1.aspx

在點擊“提交”按鈕的時候,我們可以在WebForm1中獲取到網(wǎng)頁的參數(shù),具體有如下幾種方式:

 
 
 
  1. Request["name"]  
  2. Request.Params["name"]  
  3. Request.QueryString["name"] 

這三種方法得到的字符串都是經(jīng)過默認(rèn)編碼轉(zhuǎn)換的,因為我們使用vs建立項目時編碼默認(rèn)為UTF-8,所以這時便會出現(xiàn)亂碼。這是***種問題,稍候我們將解決這個問題。

接下來將method設(shè)置為POST方法:

 
 
 
  1.  

在點擊“提交”按鈕的時候,我們可以在WebForm1中獲取到網(wǎng)頁的參數(shù),具體有如下幾種方式:

 
 
 
  1. Request["name"]  
  2. Request.Params["name"]  
  3. Request.Form["name"] 

和***種問題相同,經(jīng)過默認(rèn)的UTF-8轉(zhuǎn)換,這里還會出現(xiàn)亂碼。這是第二種問題。

問題一的解決方法:

 
 
 
  1. StringBuilder sb = new StringBuilder();  
  2. IServiceProvider provider = (IServiceProvider)HttpContext.Current;  
  3. HttpWorkerRequest worker = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));  
  4. byte[] bs = worker.GetQueryStringRawBytes();  
  5. String queryString = Encoding.GetEncoding("GB2312").GetString(bs);  
  6. NameValueCollection querys = HttpUtility.ParseQueryString(queryString, Encoding.GetEncoding("GB2312"));  
  7.  
  8. foreach (var item in querys.Keys)  
  9. {  
  10.     sb.AppendFormat("{0}:{1}", item.ToString(), querys[item.ToString()]);  

問題二的解決方法:

 
 
 
  1. // 獲取到InputStream  
  2. System.IO.Stream str = Request.InputStream;  
  3. Int32 strLen, strRead;  
  4. strLen = Convert.ToInt32(str.Length);  
  5. byte[] strArr = new byte[strLen];  
  6. strstrRead = str.Read(strArr, 0, strLen);  
  7.               
  8. string queryString = HttpUtility.UrlDecode(strArr, System.Text.Encoding.GetEncoding("GB2312"));  
  9.  
  10. NameValueCollection querys = HttpUtility.ParseQueryString(queryString, Encoding.GetEncoding("GB2312"));  
  11.  
  12. foreach (var item in querys.Keys)  
  13. {  
  14.     sb.AppendFormat("{0}:{1}", item.ToString(), querys[item.ToString()]);  

另外,對于***種方法,還可以直接將URL用GB2312解碼,這里不再貼出代碼。

有了這兩種方法,不管是怎樣的亂碼,都可以高枕無憂了。

原文鏈接:http://www.cnblogs.com/youring2/archive/2011/03/24/1993717.html


網(wǎng)頁標(biāo)題:Web亂碼折騰夠嗆小小妙招輕松搞定
文章來源:http://www.dlmjj.cn/article/cdscheo.html