Heim  >  Artikel  >  Web-Frontend  >  Verstümmelter JavaScript-Code

Verstümmelter JavaScript-Code

高洛峰
高洛峰Original
2016-11-26 14:48:241213Durchsuche

Parameterkodierung in JavaScript:


JavaScript-Code wird einmal kodiert
1.url=encodeURI(url); //Hinweis: Der Parameter von encodeURI() ist die gesamte URL, einschließlich die Anforderungsadresse und die Parameter


Die Serverseite erhält die Parameter und transkodiert sie dann:


Java-Code Einmal transkodieren
1.String linename = new String(request .getParameter("name").getBytes("ISO-8859-1"),"UTF-8");


oder:

JavaScript-Code doppelt codiert
1.url= encodeURI(encodeURI(url)); //EncodeURI zweimal verwenden


Serverseitige Erfassung:


Java-Code einmal dekodieren
1.String linename = request .getParameter(name);
2.//java : Zeichendekodierung
3.linename = java.net.URLDecoder.decode(linename, "UTF-8");

PS: Beim Datenaustausch zwischen Front- und Backend verwenden Sie am besten JSONObject, um die Daten zu kapseln.


Test

Server: WebLogic10.x

Browser: IE9.0
Test 1:
Front-End-JavaScript
//Ext hier. util.JSON.encode dient dazu, ein JSONObject in eine JSON-Zeichenfolge umzuwandeln, was sich von der Bedeutung von encodeURI unterscheidet
//fileUpload in caseEndReport ist auf true gesetzt
var caseEndReportTab = Ext.util.JSON.encode(caseEndReport .getForm (). GetValues ​​​​(FALSE));
CASEENDRETFORM (). Aktion){
                                                                                                                         Failure: function(){
, 'Informationsspeicherung fehlgeschlagen, Sie haben keine Betriebsberechtigung!'); = JSONObject.fromObject(caseEndReportTab);//JSON-String in JSON-Objekt konvertieren
System.out.println(accreditationJson.toString());


Wenn im Controller hinzugefügt
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF- 8");
response.setContentType("application/x-json");
Die obige Codeausgabe Kein Kauderwelsch.


Wenn Sie
response.setCharacterEncoding("UTF-8");//hinzufügen, request.setCharacterEncoding("UTF-8");

response.setContentType(( "application/x-json");

Der obige Code gibt verstümmelte chinesische Zeichen aus. Sie müssen
JSONObject caseEndReportJson = JSONObject.fromObject(caseEndReportTab);
in
JSONObject caseEndReportJson = JSONObject.fromObject ändern (new String(caseEndReportTab.getBytes("ISO8859_1"),"UTF-8"));
wird korrekt ausgegeben.

Test 2:
Front JavaScript
// fileUpload in queryForm ist auf false gesetzt, query ist eine JSON-Zeichenfolge und enthält Chinesisch
//Ext.util.JSON. encode konvertiert lediglich ein JSONObject in einen JSON-String, was sich von der Bedeutung von encodeURI unterscheidet
var query = Ext.util.JSON.encode(queryForm.getForm().getValues(false));
caseStore.proxy = new Ext.data.HttpProxy({url:"payCaseManage.do?oper=listCase&query="+query});


Backend-Java-Code

response.setCharacterEncoding("UTF-8" ) ;

request.setCharacterEncoding("UTF-8");
response.setContentType("application/x-json");
String query = request.getParameter("query");
/ /oder String query = new String(request.getParameter("query").getBytes("ISO8859_1"),"UTF-8");
JSONObject queryObject = JSONObject.fromObject(query);
String count = queryObject.getString("county");
String city = queryObject.getString("city");

System.out.println(city+county);

alle chinesischen verstümmelten Zeichen ausgeben


Test 3:
Front-End-JavaScript
//Der Front-End-EncodeURI zweimal für die URL, und die Abfragezeichenfolge enthält chinesischen Inhalt
var query = Ext.util.JSON. encode(queryForm.getForm ().getValues(false));
var url = "payCaseManage.do?oper=listCase&query="+query;
var dataUrl = encodeURI(encodeURI(url));
caseStore.proxy = new Ext.data.HttpProxy({url:dataUrl});
//Backend Java führt einmal java.net.URLDecoder.decode auf request.getParameter(" query ") aus
response.setCharacterEncoding( "UTF-8" );
request.setCharacterEncoding("UTF-8");
response.setContentType("application/x-json");
String query = java.net.URLDecoder.decode (request.getParameter( "query"),"UTF-8");
JSONObject queryObject = JSONObject.fromObject(query);
String counting = queryObject.getString("county");
String city = queryObject.getString( "city");
System.out.println(city+county);
Die Ergebnisausgabe ist korrekt auf Chinesisch


Test 4:
Front -end JavaScript
//Für URL Zwei EncodeURIs enthält caseRootId chinesischen Inhalt
caseTreeLoaderDataUrl = 'payCaseManage.do?oper=treeLoad&nodeId=' + node.id+'&text='+node.text+'&caseRootId='+caseRootId ;
caseTree.loader. dataUrl = encodeURI(encodeURI(caseTreeLoaderDataUrl));
Hintergrund Java
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8") ;
response.setContentType( "application/x-json");
//Java.net.URLDecoder.decode einmal auf request.getParameter("caseRootId") ausführen
String caseRootId = java.net. URLDecoder.decode(request.getParameter( "caseRootId"),"UTF-8");
System.out.println(caseRootId);
Die Ergebnisausgabe erfolgt korrekt auf Chinesisch


Test 5:
Front-End-JavaScript
//URL nicht mit URI kodieren. Sowohl die Stadt als auch der Landkreis enthalten chinesische Inhalte
var city = queryForm.getForm().findField("city").getValue();
var County = queryForm.getForm().findField("county").getValue ();
caseStore.proxy = new Ext.data.HttpProxy({url:"payCaseManage.do?oper=listCase&city="+city+"&county="+county"});
Backend-Jave-Code
//Verwenden Sie java.net.URLDecoder.decode nicht zur Verarbeitung von request.getParameter()
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
response.setContentType("application/x-json");
String counting = request.getParameter("county");
String city = request.getParameter("city");
System.out .println(city+county);
Chinesische verstümmelte Zeichen ausgeben


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn