Heim >Web-Frontend >js-Tutorial >Verstümmelter JavaScript-Code
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");
Test
Server: WebLogic10.xBrowser: 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");
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
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");
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