亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

JQuery中Post傳遞中文出現(xiàn)亂碼的解決方法有哪些

時(shí)間:2020-11-11 11:12:57 jQuery 我要投稿

JQuery中Post傳遞中文出現(xiàn)亂碼的解決方法有哪些

  問(wèn)題一:

  今天在做項(xiàng)目時(shí),需要用到Ajax,之前我在用GET方式傳遞中文參數(shù)時(shí),只需要在后臺(tái)程序中設(shè)置頁(yè)面編碼為GB2312即中文能正常顯示,可是這次由于表單項(xiàng)目較多,不適合用GET方式傳遞,只能用POST方式,但發(fā)現(xiàn)后臺(tái)程序中設(shè)置編碼為GB2312時(shí)中文還是顯示的亂碼。經(jīng)過(guò)一番研究問(wèn)題才最終得到解決。

  解決方法:

  解決此問(wèn)題的方法非常簡(jiǎn)單,只需要在JS處理參數(shù)時(shí)用escape()函數(shù)處理一下即可,而且不需要再用unescape()解碼,這個(gè)方法適合POST和GET方式,具體的Ajax代碼這里我不例出,這里給出用escape()函數(shù)處理參數(shù)時(shí)的代碼:

  復(fù)制代碼 代碼如下:var htmer ="getcode="+escape(getcode)+"&Content="+escape(Content);

  通常我們?cè)谔幚鞟jax的時(shí)候會(huì)在這里直接獲取參數(shù)的值,為了使中文參數(shù)不是亂碼,我們只需要用escape()函數(shù)對(duì)參數(shù)處理下即可。

  問(wèn)題二:

  當(dāng)網(wǎng)站頁(yè)面不是utf-8編碼時(shí),ajax提交的中文便會(huì)變成亂碼。

  解決方法如下:

  找到j(luò)query.js里的contentType:application/x-www-form-urlencoded,將它改成contentType:application/x-www-form-urlencoded; charset=UTF-8就可以了。

  原因:未指定charset時(shí),jquery使用ISO-8859-1,ISO8859-1,通常叫做Latin-1。Latin-1包括了書寫所有西方歐洲語(yǔ)言不可缺少的`附加字符。jquery的ajax根本沒(méi)有考慮到國(guó)際化的問(wèn)題,而使用了歐洲的字符集,所以傳遞中文時(shí)才會(huì)出現(xiàn)亂碼

  我很久以前一直在使用Prototype框架。在.net-GB2312或jsp教程-utf8下都使用過(guò),從來(lái)沒(méi)遇到有字符編碼的問(wèn)題。于是將Prototype和JQuery代碼都下載下來(lái)打開(kāi)研究原因。

  不同之處在于JQuery默認(rèn)的contentType:application/x-www-form-urlencoded

  而Prototype則是contentType:application/x-www-form-urlencoded; charset=UTF-8

  這才是JQuery正在亂碼的原因,在未指定字符集的時(shí)候,是使用ISO-8859-1

  ISO8859-1,通常叫做Latin-1。Latin-1包括了書寫所有西方歐洲語(yǔ)言不可缺少的附加字符。

  JQuery的Ajax根本沒(méi)有考慮到國(guó)際化的問(wèn)題,使用了歐洲的字符集,所以才引起了傳遞中文出現(xiàn)亂碼的問(wèn)題。

  而我們的UTF-8則可以解決這一問(wèn)題。

  最終指需要修改JQuery的代碼,顯式聲明contentType使用utf-8字符集,即可解決GB2312中文傳遞的問(wèn)題。

  只需要簡(jiǎn)單的將JQuery的代碼加以修改,加上charset=UTF-8就可以了,這樣不需要改變改什么web.config或什么在頁(yè)面中改編碼什么的了,也不需要用escapc(str)再在服務(wù)端解碼。英文怎么傳遞,中文也怎么傳遞。

  這里給段簡(jiǎn)單的代碼測(cè)試一下:

  test.html頁(yè)面代碼:

  復(fù)制代碼 代碼如下:

  function DoAjax(){

  $.post("AjaxTest.aspx",{txt:$("#tbox1").val()},

  function(data){

  $("#AjaxResponse").text(data);

  }

  );

  }

  AjaxTest

  AjaxTest.aspx處理頁(yè)面:

  復(fù)制代碼 代碼如下:<%@ page="" language="C#" contenttype="text/html" responseencoding="gb2312">

  string parms;

  void Page_Load(object sender , EventArgs e)

  {

  parms=Request["txt"];

  if (String.IsNullOrEmpty(parms)){

  Response.Write("Is Null");

  }else{

  Response.Write(parms);

  }

  }

  此外,由于Ajax的默認(rèn)漢字編碼是utf-8,因此比較保險(xiǎn)的方法是保證所涉及的頁(yè)面統(tǒng)一編碼格式為utf-8。

【JQuery中Post傳遞中文出現(xiàn)亂碼的解決方法有哪些】相關(guān)文章:

1.jQuery中常用的動(dòng)畫函數(shù)方法有哪些

2.php如何解決中文亂碼問(wèn)題

3.出現(xiàn)口腔潰瘍的原因有哪些

4.預(yù)防老人出現(xiàn)牙周炎的方法有哪些

5.簡(jiǎn)述php 各種應(yīng)用亂碼問(wèn)題的解決方法

6.jQuery中outerWidth的方法介紹

7.主板日常故障的解決方法有哪些

8.jquery中ajax學(xué)習(xí)筆記