ajax url參數中文亂碼解決

最近在學習編寫門戶網站時,經過ajax的url參數傳遞字符串給服務器遇到中文亂碼的問題,若是須要傳遞的數據不經過url直接傳遞,好比用jquery.post參數方式傳遞變量,則不會出現亂碼問題,網上搜索找到以下解決方法:html

一、java

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

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

二、ajax

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

經過上述方法編解碼就能解決中文亂碼問題,具體原理以下:瀏覽器

在AJAX瀏覽器來進行發送數據時,通常它所默認的都是UTF-8的編碼.服務器

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

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

說明:1 .encodeURL函數主要是來對URI來作轉碼,它默認是採用的UTF-8的編碼.
2. UTF-8編碼的格式:一個漢字來三個字節構成,每個字節會轉換成16進制的編碼,同時添加上%號.post

這裏要作兩次encodeURI的緣由以及說明:

其中具體的原理分析以下,假設頁面端輸入的中文是一個「中」,按照下面步驟進行解碼
1.第一次encodeURI,按照utf-8方式獲取字節數組變成[-28,-72-83],對字節碼數組進行遍歷,把每一個字節轉化成對應的16進制數,這樣就變成了[E4,B8,AD],最後變成[%E4,%B8,%AD]

2.第二次encodeURI,把數組最後變成[%25E4,%25B8,%25AD]而後就把處理後的數據[%25E4,%25B8,%25AD]發往服務器端,
當應用服務器調用getParameter方法,getParameter方法會去向應用服務器請求參數
應用服務器最初得到的就是發送來的[%25E4,%25B8,%25AD],應用服務器會對這個數據進行URLdecode操做,URldecode操做和encodeURL操做是相反的操做,處理結果就是[%E4,%B8,%AD],並把這個值返回給getParameter方法

而後再在服務器端中調用相應的URL轉碼方法或者是函數  就能夠把數據還原成最初頁面發送過來的中文「中」了。

 

補充——C# URL編碼轉換 URL轉碼 UrlDecode UrlEncode:

using System.Web; 引用system.web。

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

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

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

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

引用:

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

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

相關文章
相關標籤/搜索