String param = req.getParameter("name_startsWith"); try { System.out.println("param1====="+new String(param.getBytes("ISO-8859-1"), "GBK")); System.out.println("param2====="+new String(param.getBytes("ISO-8859-1"), "GB2312")); System.out.println("param3====="+new String(param.getBytes("ISO-8859-1"), "UTF-8")); System.out.println("param4====="+new String(param.getBytes("GB2312"), "ISO-8859-1")); System.out.println("param5====="+new String(param.getBytes("GB2312"), "GBK")); System.out.println("param6====="+new String(param.getBytes("GB2312"), "UTF-8")); System.out.println("param7====="+new String(param.getBytes("GBK"), "ISO-8859-1")); System.out.println("param8====="+new String(param.getBytes("GBK"), "UTF-8")); System.out.println("param9====="+new String(param.getBytes("GBK"), "GB2312")); System.out.println("param10====="+new String(param.getBytes("UTF-8"), "GBK")); System.out.println("param11====="+new String(param.getBytes("UTF-8"), "GB2312")); System.out.println("param12====="+new String(param.getBytes("UTF-8"), "ISO-8859-1")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); }
js与后台编码不一致,转换:
js代码:客户端对url进行两次转码(也可能是一次):(str为中文)
参数及url(若是只需参数,就直接在js里面转参数就可以)
var url = 'policy.do?method=searchSuggest&word=' + str+"&now="+new Date().getTime();
url = encodeURI(url);
url = encodeURI(url);
servlet服务器段对参数值进行解码:
String word = request.getParameter("word");
word = java.net.URLDecoder.decode(word,"UTF-8");
例子:js:
/**** * 厂商自动完成功能 */ $(function() { $( "#mediaName_temp" ).autocomplete({ source: function( request, response ) { if(trim(request.term)!=""){ //alert("111"); $.ajax({ url: "/json/selectMedia.json", dataType: "json", data: { featureClass: "P", style: "full", maxRows: 12, name_startsWith: encodeURI(request.term) }, success: function( data ) { response( $.map( data.mediaList, function( item ) { return { label: item.mediaName, value: item.mediaName, id: item.id } })); } }); } }, minLength: 1, select: function( event, ui ) { document.getElementById("mediaId").value=ui.item.id ; document.getElementById("mediaName").value=ui.item.value ; document.getElementById("mediaName_temp").disabled="disabled"; }, open: function() { $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" ); }, close: function() { $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" ); } }); });
servlet:
@RequestMapping("/json/selectMedia.json") public ModelAndView selectMedia(HttpServletRequest req, HttpServletResponse resp, ModelMap modelMap, Media media) { String mediaName = req.getParameter("name_startsWith").trim(); try { mediaName = java.net.URLDecoder.decode(mediaName,"UTF-8"); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } media.setMediaName(mediaName); ListmediaList = mediaService.selectMediaList(media); //List adTypeList = mediaDictionaryService.queryMediaDictionaryList("adType"); modelMap.put("mediaList", mediaList); //modelMap.put("adTypeList", adTypeList); return new ModelAndView(jsonView); }