1. 程式人生 > >AJAX技術使用XMLHttpRequest物件傳遞引數的中文亂碼問題

AJAX技術使用XMLHttpRequest物件傳遞引數的中文亂碼問題

 在瀏覽器端使用XMLHttpRequest物件向伺服器端傳送中文引數,如果不在瀏覽器端和伺服器端進行處理時,會出現中文亂碼問題.針對這種問題,有很多的解決辦法,但往往都是在IE下可以正常顯示中文,在其他瀏覽器下(比如FireFox)卻仍然是亂碼.在FireFox下解決了亂碼問題,但回到IE下訪問卻出現了亂碼問題.所以針對要在目前流行的各種瀏覽器下解決中文亂碼問題,才能使編寫的Web程式變得通用. 
針對這種問題的解決方案,我總結大致有兩種:

一,在瀏覽器端對要傳遞的中文引數進行編碼處理.程式碼如下:

xmlhttp.open("POST","AjaxServlet",true); //請求引數初始化

xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //因為請求方式為POST,所以這裡要設定請求頭.(如果請求方式為GET,此句程式碼可以省略)

xmlhttp.send("name="+encodeURI(encodeURI("中國"))); //向伺服器端傳送引數


在伺服器端程式碼:
PrintWriter out = response.getWriter(); //得到response的輸出流物件

String name1 = request.getParameter("name"); //得到KEY為"name"的請求引數 
String name = URLDecoder.decode(name1,"utf-8"); //對得到的引數進行解碼

out.print(name); //向瀏覽器端傳送資料


二,在瀏覽器端對要傳遞的中文引數進行編碼處理.程式碼如下:


xmlhttp.open("POST","AjaxServlet",true); //請求引數初始化

xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //因為請求方式為POST,所以這裡要設定請求頭.(如果請求方式為GET,此句程式碼可以省略)

xmlhttp.send("name="+encodeURI("中國")); //向伺服器端傳送引數

在伺服器端程式碼:

PrintWriter out = response.getWriter(); //得到response的輸出流物件

String name1 = request.getParameter("name"); //得到KEY為"name"的請求引數 

String name = new String((name1.getBytes("ISO-8859-1")),"UTF-8"); //對得到的引數進行解碼
out.print(name); //向瀏覽器端傳送資料
以上兩種方法,在使用XMLHttpRequest物件傳遞中文引數時,亂碼問題可以在任意瀏覽器下解決,正確顯示中文.


該文章轉載自網路大本營:http://www.xrss.cn/Dev/AJAX/2007101717013.Html

相關推薦

AJAX技術使用XMLHttpRequest物件傳遞引數中文亂碼問題

 在瀏覽器端使用XMLHttpRequest物件向伺服器端傳送中文引數,如果不在瀏覽器端和伺服器端進行處理時,會出現中文亂碼問題.針對這種問題,有很多的解決辦法,但往往都是在IE下可以正常顯示中文,在其他瀏覽器下(比如FireFox)卻仍然是亂碼.在FireFox下解決了亂

url中向後臺傳遞引數中文亂碼

方法一: 1、jsp中程式碼   var userNo = $('#prisoner_id').val();       userNo = encodeURI(userNo);       allPrisonerGrid.datagrid('options').url = 'mobilemanage!all

解決get方法傳遞URL引數中文亂碼問題

應用一:解決tomcat下中文亂碼問題(先來個簡單的)  在tomcat下,我們通常這樣來解決中文亂碼問題: 過濾器程式碼: package filter;   import java.io.*;   import javax.servlet.*;   impor

解決get方法傳遞URL引數中文亂碼和解決tomcat下中文亂碼問題

應用一:解決tomcat下中文亂碼問題(先來個簡單的)  在tomcat下,我們通常這樣來解決中文亂碼問題: 過濾器程式碼: Java程式碼   package filter;  import java.io.*;  import javax.servlet.*; 

postman測試請求引數中文亂碼問題

用IDEA除錯程式碼時,用postman測試請求url,發現post或者get請求中引數是中文的話,後臺獲取的引數是亂碼, 一般兩個方面 傳送請求的一方:postman的問題 接受請求的一方:tomcat的問題 postman的解決方案,可以先設定全域性變數,將漢字寫到變數,並在引數中新增全域性變數引

.AJAX - 建立 XMLHttpRequest 物件

1.建立 XMLHttpRequest 物件: variable=new XMLHttpRequest(); 老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 物件: variable=new ActiveXObject("Microsoft.XM

JavaScript原生ajaxXMLHttpRequest物件)用法

傳統方法的缺點: 傳統的web互動是使用者觸發一個http請求伺服器,然後伺服器收到之後,在做出響應到使用者,並且返回一個新的頁面,每當伺服器處理客戶端提交的請求時,客戶都只能空閒等待,並且哪怕只是一次很小的互動、只需從伺服器端得到很簡單的一個數據,都要返回一個

Response物件響應的中文亂碼處理

在開發中,我們經常會遇到使用Response物件響應中文,會遇到亂碼,有些人遇到了不知道怎麼處理,會放在那裡不管,我這裡分享下我對於Response物件響應中文亂的碼處理的一些心得吧: /** * Response響應中文的處理 */ public clas

Ajax實現Map物件傳遞

噠噠噠 js程式碼 //變更儲存 function changeSave() { var $formParams = $('#form-info').serializeJson();

解決@Value("${name}")獲取application.properties中定義的引數中文亂碼的問題

application.properties中引數如圖: pom.xml中設定如圖 但程式碼 import org.springframework.web.bind.annotation.RestController; @RequestMappin

get請求和post請求引數中文亂碼的解決

首先出現中文亂碼的原因是tomcat預設的編碼方式是"ISO-8859-1",這種編碼方式以單個位元組作為一個字元,而漢字是以兩個位元組表示一個字元的。 post請求引數中文亂碼的解決辦法   對於post請求,請求中問亂碼的兩種解決辦法。   (1): request.set

java web專案介面請求get,post請求引數中文亂碼解決

java web專案介面請求get,post請求引數中文亂碼解決 在開發過程中,有時候會碰到get,post請求引數中文亂碼。 原因:  Http請求傳輸時將url以ISO-8859-1編碼,伺服器收到位元組流後預設會以ISO-8859-1編碼來解碼成字元

直接用ajax的get方式傳遞引數要encodeURI()

web伺服器預設會進行URLdecode操作。 在瀏覽器的位址列輸入網址,如果有空格等url需要編碼的字元會自動轉義編碼。 但是用ajax的get方式傳遞引數不會自動編碼,所以要用encodeURI() 進行轉義編碼,否則如果遇到比如空格等需要轉義編碼的字元沒有進行轉義編

jQuery之非同步Ajax請求使用 通過傳遞引數來呼叫後臺方法返回狀態

$.ajax({type:'',data:'',async:''...})  引數: 1.cache: true快取頁面 false 不快取頁面 (預設: true,dataType為script和jsonp時預設為false) 1.type:  GET /POST 請求方式 ("POST" 或 "GET"

jsp-連結傳遞引數出現亂碼問題

在 tomecat的安裝路徑上 開啟tomcat->conf->server.xml 找到 <Connector port="8080" protocol="HTTP/1.1"                connectionTimeout="20

jsp a連結新增URL引數中文亂碼

<a href="javascript:void(0)" onclick="javascript:window.open(encodeURI(encodeURI('${pageContext.request.contextPath}/index?order=${nowProType}&

解決HttpClient工具中application/x-www-form-urlencoded表單提交時,請求引數中文亂碼問題

一、引數亂碼現象 當我去請求第三方介面時,介面接收格式為Form表單的時候,使用HttpClient工具類。這時,對於封裝進HttpPost物件裡的請求引數,如果有中文引數,會出現亂碼的現象。 二、程式碼現象復現 controller層 @RestContr

SpringMVC之GET請求引數中文亂碼

只怪自己專案做太少,遇到這些問題糾結太久,浪費時間太多. 在此記錄, WEB.XML檔案中的編碼過濾器設定是針對POST請求的,tomacat對GET和POST請求處理方式是不同的,要處理針對GET請求的編碼問題,則需要改tomcat,conf目錄下的server.x

$.ajax在谷歌瀏覽器傳入中文亂碼的情況

有運營同學反映,後臺編輯的一箇中文顯示名稱,前臺亂碼了,於是乎~~ 先看程式碼是否get請求沒轉碼: [javascript] view plain copy $.ajax({       type: 'POST',       url: '/adm

Tomcat配置導致輸入引數中文亂碼

配置 server.xml。   <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPor