Heim >Web-Frontend >js-Tutorial >JQuery erhält asynchron die Lösung für den verstümmelten chinesischen Rückgabewert value_jquery
Bei der Verwendung von jqgrid zum asynchronen Abrufen von Listenwerten ist ein Problem aufgetreten. Die vom Server aus der Datenbank abgerufenen Daten enthielten keine verstümmelten chinesischen Zeichen (die Protokolle wurden ohne verstümmelte Zeichen eingegeben), wurden jedoch asynchron an den Client übertragen , erschienen verstümmelte Zeichen. Die Serverseite wurde kodiert (UTF-8-Kodierung). Zuerst hatte ich immer den Verdacht, dass es sich um ein Problem mit dem Client handelte. Beispielsweise war die Codierung zwischen dem Client und dem Server nicht konsistent, und ich vermutete auch, dass der jqGrid-Tool-Funktion der Inhaltstyp „application/x-www-form-“ fehlte. urlencoded; charset=utf-8", usw. usw. Fragen.
Das Ergebnis war weder das eine noch das andere und ich kämpfte mehrere Stunden lang. Nachdem ich von Daniel daran erinnert wurde, stellte ich fest, dass sich der ursprüngliche Code immer noch auf der Serverseite befand und es sich um ein Versehen handelte.
@RequestMapping(value = "/searchUserList.form") @ResponseBody public void searchUserList(int page, int rows, HttpServletRequest request, HttpServletResponse response) throws IOException{ System.out.println("idcard="+idCard+"\n page="+page+"\n rows="+rows); List<User> list = userService.findByIDCard(idCard); int totalRecord = list.size(); int totalPage = totalRecord%rows == 0 ? totalRecord/rows : (totalRecord/rows+1); int index = (page-1)*rows; int pageSize = rows; String json = "{\"total\": \""+totalPage+"\", \"page\": \""+page+"\", \"records\": \""+totalRecord+"\", \"rows\": ["; for (int i = index; i < pageSize + index && i<totalRecord; i++) { User u = list.get(i); json += "{\"id\":\"" + u.getUserId() + "\",\"userName\":\""+u.getUserName()+"\",\"idCard\":\""+ u.getIdCard() +"\",\"userTel\":\""+u.getUserTel()+"\",\"userSex\":\""+u.getUserSex()+ "\",\"bankCard\":\""+u.getBankCard()+"\",\"cardStatus\":\""+u.getCardSatus()+"\",\"createTime\":\""+ u.getCreateTime()+"\"}"; if (i != pageSize + index - 1 && i != totalRecord - 1) { json += ","; } } json += "]}"; request.setCharacterEncoding("utf-8"); //这里不设置编码会有乱码 response.setContentType("text/html;charset=utf-8"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); //输出中文,这一句一定要放到response.setContentType("text/html;charset=utf-8"), response.setHeader("Cache-Control", "no-cache")后面,否则中文返回到页面是乱码 out.print(json.toString()); out.flush(); out.close(); }