本篇文章為大家展示了怎么解決Web亂碼的問(wèn)題,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
玉泉網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,玉泉網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為玉泉上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的玉泉做網(wǎng)站的公司定做!
Web數(shù)據(jù)提交有兩種方法:GET 和 POST。關(guān)于這兩種方法的介紹,請(qǐng)看這里:Http之Get/Post請(qǐng)求區(qū)別。我在這里要介紹的是如何在程序中獲取HTTPRequest數(shù)據(jù),并成功解決編碼不同時(shí)所引起亂碼的問(wèn)題。
現(xiàn)在我們開(kāi)始,先看一段HTML代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>無(wú)標(biāo)題文檔</title> </head> <body> <form id="myForm" action="http://localhost:9000/WebForm1.aspx" method="post"> 名稱:<input tyep="text" name="name" width="200px" value="獨(dú)釣寒江"/> <br /> 年齡:<input tyep="text" name="age" width="200px" value="24"/> <br /> <br /> <input type="submit" value="提交" /> </form> </body> </html>
在這個(gè)HTML文件中,我們使用的編碼是GB2312,F(xiàn)orm表單中包含name和age兩個(gè)數(shù)據(jù)。首先將method設(shè)置為GET方法:
<form id="myForm" action="http://localhost:9000/WebForm1.aspx" method="GET">
另外我們?cè)傩陆ㄒ粋€(gè)Web應(yīng)用程序,并在本地新建一個(gè)站點(diǎn),將端口設(shè)置為9000,添加一個(gè)頁(yè)面,名稱為WebForm1.aspx,也就是上面Form表單中的action所指向的地址http://localhost:9000/WebForm1.aspx
在點(diǎn)擊“提交”按鈕的時(shí)候,我們可以在WebForm1中獲取到網(wǎng)頁(yè)的參數(shù),具體有如下幾種方式:
Request["name"] Request.Params["name"] Request.QueryString["name"]
這三種方法得到的字符串都是經(jīng)過(guò)默認(rèn)編碼轉(zhuǎn)換的,因?yàn)槲覀兪褂胿s建立項(xiàng)目時(shí)編碼默認(rèn)為UTF-8,所以這時(shí)便會(huì)出現(xiàn)亂碼。這是***種問(wèn)題,稍候我們將解決這個(gè)問(wèn)題。
接下來(lái)將method設(shè)置為POST方法:
<form id="myForm" action="http://localhost:9000/WebForm1.aspx" method="POST">
在點(diǎn)擊“提交”按鈕的時(shí)候,我們可以在WebForm1中獲取到網(wǎng)頁(yè)的參數(shù),具體有如下幾種方式:
Request["name"] Request.Params["name"] Request.Form["name"]
和***種問(wèn)題相同,經(jīng)過(guò)默認(rèn)的UTF-8轉(zhuǎn)換,這里還會(huì)出現(xiàn)亂碼。這是第二種問(wèn)題。
問(wèn)題一的解決方法:
StringBuilder sb = new StringBuilder(); IServiceProvider provider = (IServiceProvider)HttpContext.Current; HttpWorkerRequest worker = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest)); byte[] bs = worker.GetQueryStringRawBytes(); String queryString = Encoding.GetEncoding("GB2312").GetString(bs); NameValueCollection querys = HttpUtility.ParseQueryString(queryString, Encoding.GetEncoding("GB2312")); foreach (var item in querys.Keys) { sb.AppendFormat("{0}:{1}<br />", item.ToString(), querys[item.ToString()]); }
問(wèn)題二的解決方法:
// 獲取到InputStream System.IO.Stream str = Request.InputStream; Int32 strLen, strRead; strLen = Convert.ToInt32(str.Length); byte[] strArr = new byte[strLen]; strstrRead = str.Read(strArr, 0, strLen); string queryString = HttpUtility.UrlDecode(strArr, System.Text.Encoding.GetEncoding("GB2312")); NameValueCollection querys = HttpUtility.ParseQueryString(queryString, Encoding.GetEncoding("GB2312")); foreach (var item in querys.Keys) { sb.AppendFormat("{0}:{1}<br />", item.ToString(), querys[item.ToString()]); }
另外,對(duì)于***種方法,還可以直接將URL用GB2312解碼,這里不再貼出代碼。
有了這兩種方法,不管是怎樣的亂碼,都可以高枕無(wú)憂了。
上述內(nèi)容就是怎么解決Web亂碼的問(wèn)題,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文標(biāo)題:怎么解決Web亂碼的問(wèn)題
網(wǎng)頁(yè)地址:http://aaarwkj.com/article32/pegcsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、定制開(kāi)發(fā)、建站公司、微信小程序、商城網(wǎng)站、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)