日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ajax url参数中文乱码解决

發(fā)布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ajax url参数中文乱码解决 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近在學(xué)習(xí)編寫門戶網(wǎng)站時,通過ajax的url參數(shù)傳遞字符串給服務(wù)器遇到中文亂碼的問題,如果需要傳遞的數(shù)據(jù)不通過url直接傳遞,比如用jquery.post參數(shù)方式傳遞變量,則不會出現(xiàn)亂碼問題,網(wǎng)上搜索找到如下解決方法:

1、

對js的url中的中文參數(shù)值使用兩次encodeURI(),即

encodeURI(encodeURI("url的中文參數(shù)值")),

2、

C#中使用System.Web.HttpUtility.UrlDecode(context.Request["param"], System.Text.Encoding.GetEncoding("UTF-8"));//將Url中的編碼轉(zhuǎn)換為簡體漢字

通過上述方法編解碼就能解決中文亂碼問題,具體原理如下:

在AJAX瀏覽器來進(jìn)行發(fā)送數(shù)據(jù)時,一般它所默認(rèn)的都是UTF-8的編碼.

使用JQUERY中所提供的方法來做操作

function verify() {
//解決中文亂麻問題的方法1,頁面端發(fā)出的數(shù)據(jù)作一次encodeURI,
服務(wù)器段使用進(jìn)行轉(zhuǎn)移成UTF-8;
//解決中文亂麻問題的方法2,頁面端發(fā)出的數(shù)據(jù)作兩次encodeURI,
這個做的好處在于,不管瀏覽器用戶在頁面來設(shè)置編碼,服務(wù)器所采用的編碼來做一次URLencode轉(zhuǎn)換成UTF-8.
var url = "AJAXServer?name=" + encodeURI(encodeURI($("#userName").val()));
url = convertURL(url);
$.get(url,null,function(data){
$("#result").html(data);
});
}

說明:1 .encodeURL函數(shù)主要是來對URI來做轉(zhuǎn)碼,它默認(rèn)是采用的UTF-8的編碼.
2. UTF-8編碼的格式:一個漢字來三個字節(jié)構(gòu)成,每一個字節(jié)會轉(zhuǎn)換成16進(jìn)制的編碼,同時添加上%號.

這里要做兩次encodeURI的原因以及說明:

其中具體的原理分析如下,假設(shè)頁面端輸入的中文是一個“中”,按照下面步驟進(jìn)行解碼
1.第一次encodeURI,按照utf-8方式獲取字節(jié)數(shù)組變成[-28,-72-83],對字節(jié)碼數(shù)組進(jìn)行遍歷,把每個字節(jié)轉(zhuǎn)化成對應(yīng)的16進(jìn)制數(shù),這樣就變成了[E4,B8,AD],最后變成[%E4,%B8,%AD]

2.第二次encodeURI,把數(shù)組最后變成[%25E4,%25B8,%25AD]然后就把處理后的數(shù)據(jù)[%25E4,%25B8,%25AD]發(fā)往服務(wù)器端,
當(dāng)應(yīng)用服務(wù)器調(diào)用getParameter方法,getParameter方法會去向應(yīng)用服務(wù)器請求參數(shù)
應(yīng)用服務(wù)器最初獲得的就是發(fā)送來的[%25E4,%25B8,%25AD],應(yīng)用服務(wù)器會對這個數(shù)據(jù)進(jìn)行URLdecode操作,URldecode操作和encodeURL操作是相反的操作,處理結(jié)果就是[%E4,%B8,%AD],并把這個值返回給getParameter方法

然后再在服務(wù)器端中調(diào)用相應(yīng)的URL轉(zhuǎn)碼方法或者是函數(shù)??就可以把數(shù)據(jù)還原成最初頁面發(fā)送過來的中文“中”了。

?

補(bǔ)充——C# URL編碼轉(zhuǎn)換 URL轉(zhuǎn)碼 UrlDecode UrlEncode:

using System.Web; 引用system.web。

  textBox2.Text = System.Web.HttpUtility.UrlDecode(textBox1.Text, System.Text.Encoding.GetEncoding("GB2312"));//將Url中的編碼轉(zhuǎn)換為簡體漢字

  textBox2.Text = System.Web.HttpUtility.UrlEncode(textBox1.Text, System.Text.Encoding.GetEncoding("GB2312"));//將簡體漢字轉(zhuǎn)換為Url編碼

  textBox2.Text = System.Web.HttpUtility.UrlDecode(textBox1.Text, System.Text.Encoding.GetEncoding("BIG5"));//將Url中的編碼轉(zhuǎn)換為繁體漢字

  textBox2.Text = System.Web.HttpUtility.UrlEncode(textBox1.Text, System.Text.Encoding.GetEncoding("BIG5"));//將繁體漢字轉(zhuǎn)換為Url

引用:

http://www.cnblogs.com/myjavawork/articles/1784748.html

http://blog.clump.cc/cle/2013/120427269.html

轉(zhuǎn)載于:https://www.cnblogs.com/liuslayer/p/4968448.html

總結(jié)

以上是生活随笔為你收集整理的ajax url参数中文乱码解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。