導航:首頁 > 編程語言 > javaajax傳值亂碼

javaajax傳值亂碼

發布時間:2021-02-27 12:47:15

① ajax如何傳中文參數亂碼解決辦法

由於某種原因ajax默認就是uft-8的編碼,那麼我們使用一gbk就容易出現亂碼的問題,下面我們就來告訴你php教程ajax亂碼的解決方法吧。
傳遞中文參數,然後修改資料庫教程的。
<script
var url=admin/ajaxmodify.php?+key+=;
url+=encodeuricomponent(encodeuricomponent(value));
xmlhttp.open(get,url,true);
xmlhttp.send(null);
</script
參數是中文encodeuricomponent這個方法必須調用兩次*/function utf8rawurldecode ($source) {
$decodedstr = ;$pos = 0;
$len = strlen ($source);
while ($pos < $len) {
$charat = substr ($source, $pos, 1);
if ($charat == '%') {$pos++;
$charat = substr ($source, $pos, 1);
if ($charat == 'u') {
// we got a unicode character$pos++;
$unicodehexval = substr ($source, $pos, 4);
$unicode = hexdec ($unicodehexval);
$entity = &#. $unicode . ';';
$decodedstr .= utf8_encode ($entity);$pos += 4;}else {
// we have an escaped ascii character
$hexval = substr ($source, $pos, 2);
$decodedstr .= chr (hexdec ($hexval));$pos += 2;}} else {
$decodedstr .= $charat;$pos++;}}
return $decodedstr;}/*
註:js中,在使用字元轉碼的時候,推薦使用 encodeuricomponent() 或者 encodeuri(),而非escape()。

java中ajax接收返回數據是亂碼,怎麼辦不要告訴我配置什麼response。setEoncling等的

在頁面用EncodeURI()加密之後,在java里用URIDecoder.decode("字元集",「傳回來的字元串」);
如果你用的伺服器是tomcat的話,就用回在tomcat的server.xml里的connector標簽里答加上
URIEncoding="utf-8"屬性
<Connector URIEncoding="utf-8" port="8009" protocol="AJP/1.3" redirectPort="8443"/>

③ ajax傳參為中文,亂碼問題,求救!!

。。。請這樣寫吧。

data: { men: escape(selectValue) },//傳參為中文,這步是把selectValue 值傳給men

escape是瀏覽器轉譯方法內。用此方法,對安容全性及數據一致性有很大的作用。

同理,有逆方法unescape。
unescape一般用於ajax在html頁面接收json字元串時的轉譯及顯示。

希望對你有幫助。

④ ajax $.post傳值中文亂碼!

方法一
在後台中使用request.setCharacterEncoding("UTF-8");
方法二
$.ajax({
type:'post',

......
contentType:'application/x-www-form-urlencoded; charset=UTF-8'
});
方法三(此方法絕對可行)
前台版js將參數值轉為統一資權源標示符(URI)例如name = encodeURI(encodeURI(『張三'));注意要
encodeURI兩次。
後台需要對URI進行解析
String name= request.getParameter(「name」);
name= URLDecoder.decode(name, 「UTF-8″);

⑤ 為什麼利用AJAX傳回來的值是亂碼

這是由於客戶端請求與伺服器端相應編碼不一致。
1.在你的頁面上,你需要指定頁面的編碼,如:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2.在你的伺服器端也要指定輸出編碼,如:
response.charset = "utf-8";
3.你的前端頁面和後台處理的頁面字元編碼必須同樣為utf-8。
這樣一般就不會亂碼了,如果還亂,那麼你就用escape()將請求進行編碼後再發送,而後台也使用unescape()將請求進行解碼後再處理就可以了。

輸出時候的中文呢?在Action裡面。
如果是html頁面:
response.setContentType("text/html") ;
response.setCharacterEncoding("utf8") ;//這句會對輸出字元進行設置
如果是xml,把text/html改成text/xml就OK了!
註:個人認為
response.setContentType("text/html; charset=UTF-8");
這方法不太保險,ContentType屬性是針對頁面的,如果是在當前頁面輸出就可以。但跳轉或者傳輸數據的話會出問題!

⑥ Ajax中用URL傳值,亂碼怎麼解決

解決方法:
方法一:提交前採用encodeURI兩次編碼,記住一定是兩次
1.修改以下代碼

復制代碼代碼如下:

data:{id:1, type:encodeURI(encodeURI(『商品版'))}

2.在後台權action里要對取得的字元串進行decode
1、String type = request.getParameter(「type」);
2、type = URLDecoder.decode(type, 「UTF-8″);
方法二:ajax配置contentType屬性,加上charset=UTF-8
在ajax方法中加入以下參數
contentType: 「application/x-www-form-urlencoded; charset=UTF-8″使用其它js框架或者xhr都是差不多,設置header中contentType即可,
這里關鍵是charset=UTF-8,如果沒有這個,是不行的,默認jQuery里的contentType是沒有的

⑦ java中亂碼 ajax 傳入後台是沒事,但是經轉碼後「+」顯示不出來是怎麼回事

現在js編碼再到java解碼。
解決辦法:
1、將字元放到form中,然後內用js提交form表單到伺服器。容
2、將字元中的特殊字元替換成十六進制的字元,一些特殊字元與十六進制的對應關系:

+ 空格 / ? % & = #
%2B %20 %2F %3F %25 %26 &3D %23

str = str.replace(/\+/g,"%2B"); 將+號替換為十六進制
3、最簡單的一種,使用encodeURIComponent()函數。
該方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( )

⑧ java/js/html/ajax 使用ajax請求,中文亂碼~~

url=encodeURI(encodeURI(url));前台轉碼一次,java.net.URLDecoder.decode(paperTitle,"UTF-8");後台也轉碼下,試試。

⑨ Ajax傳遞中文參數到後台亂碼的有效解決方法

使用Ajax傳遞中文參數,如果不對參數進行處理的話,傳到後台會變成亂內碼,經測試容可以使用如下方法
這里是以jquery.autocomplete插件中獲取輸入框中的數據傳到後台為例:
注意要對中文使用encodeURI編碼兩次
復制代碼
代碼如下:
extraParams:
{q:function(){return
encodeURI(encodeURI($('#keyword').val()))}}
這里同樣也要解碼兩次
復制代碼
代碼如下:
String
key
=
URLDecoder.decode(URLDecoder.decode(q,"UTF-8"),"tuf-8");

⑩ URL傳遞中文、Ajax傳遞中文,Java如何編碼如何解決亂碼

地址欄中出現漢字的情況有兩種,一種是漢字出現在URL的路徑部分,一種是漢字出現在URL的傳參的部分,第二種情況的時候必須採用編碼後傳參,接受時解碼的方式完成傳參。js中編碼有escape(),encodeURI(),encodeURIComponent()三個常用的方法,escape()常常用在提交頁面和處理頁面的編碼格式相同的情況下(比如它們都是GB2312),encodeURI()和encodeURIComponent()的用法基本相同,區別在於encodeURIComponent()也對"?"等特殊字元進行編碼。
一開始遇到中文參數的時候,使用encodeURI()進行了一遍編碼,傳過去後,發現解碼出現問題,於是想到可能是編碼方法使用錯誤,於是使用escape()方法,這時發現解碼時拋出isHexDigit異常。藉助網路搜索isHexDigit異常,
發現原來,是escape()方法造成了異常,同時了解了瀏覽器傳遞地址的一些原理,在瀏覽器地址欄里,瀏覽器認為%是個轉義字元,瀏覽器會把%與%之間的編碼,兩位兩位取出後進行解碼,然後再傳遞給處理頁面,
然後由處理頁面進行再次解碼。由此我想到一直使用encodeURI方法是正確的,只是需要使用兩次encodeURI方法,例如encodeURI(encodeURI("中文"));第一次是把中文編碼成%xy的格式,
第二次是對%xy中的%進行編碼,%編碼成%25。整個傳參過程大體應該是:提交頁面使用encodeURI(encodeURI("中文"))編碼,把最後的編碼結果%25xy傳遞給處理頁面的過程中,瀏覽器獲取URL地址
(注意openModelDialog方法,瀏覽器獲取不到參數編碼)後解碼成%xy,然後把%xy傳遞給處理頁面,處理頁面使用URLDecoder.decode(request.getParameter("參數名"),"UTF-8");完成解碼。
總結:1、漢字出現在URL路徑部分的時候不需要編碼解碼;
2、使用encodeURI進行2次編碼;
3、在openModelDialog()打開的模式窗體里沒辦法用request.getParameter正確獲取參數;
客戶端和伺服器在傳遞數據時可以用過濾器filter解決字元編碼問題,但filter只能解決post方式提交的數據。對於get方式,可以使用兩次encodeURI(encodeURI(中文))並在伺服器中使用URLDecoder.decode(中文, "UTF-8");
今天用Ajax校驗數據時也遇到這個問題,盡管頁面、類和web容器都統一了字元編碼,提交的數據依然是亂碼,所以就採用了2次encodeURI()編碼方式,亂碼問題就解決了。

閱讀全文

與javaajax傳值亂碼相關的資料

熱點內容
怎麼用公式比對兩列數據 瀏覽:283
交保險的app有哪些 瀏覽:559
2017年蘋果5s可以買嘛 瀏覽:153
加密文件在什麼地方找不到了 瀏覽:676
網卡驅動文件夾 瀏覽:444
iphone6qq關聯賬號顯示台機 瀏覽:709
java文件名亂碼 瀏覽:553
什麼是網橋編程固件 瀏覽:732
jquery實現網站向導提示操作插件 瀏覽:257
java小游戲實例 瀏覽:775
電腦系統能升級64 瀏覽:591
數據如何導入進sql 瀏覽:324
iosqq怎麼發文件夾 瀏覽:285
編程出社會後能做什麼工作 瀏覽:73
為什麼說數據層是里子呢 瀏覽:171
eset官方卸載工具 瀏覽:803
手機百度我在哪個文件夾 瀏覽:646
lumia925拍照對蘋果6 瀏覽:599
oraclelinux711gr2 瀏覽:516
公文格式圖片紅頭文件 瀏覽:430

友情鏈接