遇到問題:在使用xhr發出請求時,請求的url中引數帶中文,這時在後台解析request得不到中文
如:request = new activexobject("microsoft.xmlhttp");
request.open("get", url);中我的url需要帶中文引數
直接加引數是在後台解析不出來的,所以我使用方法對url進行編碼轉換
在頁面中中文引數傳遞前先轉碼:
function
encode(chinesestr)
用經過轉馬後的字串去生成 url
然後就要在後台進行解碼了
以為沒法直接從request中取到編碼字串,所以使用方法先取出url,然後再取出url的引數進行解碼
取出url,以及取引數方法
string ***
=geturlparameter(unescape(request.getquerystring()),
"***
");
//如此獲得的***即為解碼後的正確的中文
public
string geturlparameter(string str,string targetstr)
}return
stringarray[1];
}//
解碼方法
//以下是對js的escape進行解碼
private
final
static
byte
val =;
/*** 解碼 說明:本方法保證 不論引數s是否經過escape()編碼,均能得到正確的「解碼」結果**
@params*
@return
*/public
static
string unescape(string s)
elseif(
'a
'<=
ch &&
ch <='z
')
elseif(
'0
'<=
ch &&
ch <='9
')
else
if(ch =='
-'
||ch =='
_'
//unreserved : as it was
||ch =='
.'
||ch =='
!'
||ch =='
~'
||ch =='
*'
||ch =='
/''
|| ch == '(
'|| ch == ')
')
else
if(ch =='
%'
) else
elsei++
;}
return
sbuf.tostring();}
這時候得到的exfirstword
就是正確的中文了
問題解決
在使用xhr發出請求時,實際上是向後台傳送了乙個http的包,只不過這個http的包是封裝的xmlhttprequest,而xmlhttprequest對中文的編碼方式是gb2312的,這樣由於頁面用的是utf-8編碼,所以在後台就會出現問題了。
所以如果你的頁面是gbk或者gb2312編碼的,這樣在用xmlhttprequest就沒有這麼多麻煩了
ajax引數傳遞時中文亂碼問題
ajax傳遞引數時,一般就是js向程式頁面傳遞和程式向js檔案傳遞兩種情況,當出現中文漢字時,會出現亂碼。因為存在上述兩種情況,所以解決起來也要分開對待。這裡是php系統中遇到的問題,所以以php為例項來解決ajax傳遞中文的問題。1.ajax向程式頁面裡傳遞中文漢字時出現亂碼的情況 ajax中先用...
ajax主流瀏覽器的中文引數傳遞
做web的童鞋經常遇到這樣的痛苦,前端傳遞給後台的中文引數是亂碼,導致無法正確查詢資料庫或做檔案處理。現在主流的瀏覽器主要是三種 ie,firefox,chrome。我個人在web時,比較喜歡用chrome做測試展示,因為平時都常用chrome。我看過各大瀏覽器之間的比較,chrome的綜合實力是很...
PHP中json encode中文編碼的問題
php的json擴充套件自帶的json encode函式,如果對含有中文的字元進行編碼時,會自動轉換成unicode編碼。a array city 北京 abcd天津 echo json encode a n debian test server home php php test1.php 現在有...