Menggunakan jqgrid untuk mendapatkan nilai senarai secara tidak segerak, saya menghadapi masalah Data yang diperolehi oleh pelayan daripada pangkalan data tidak mempunyai aksara Cina yang kacau (log ditaip tanpa aksara yang kacau), tetapi apabila ia dihantar secara tidak segerak kepada pelanggan. , watak bercelaru muncul. Bahagian pelayan telah dikodkan (pengekodan UTF-8). Pada mulanya, saya selalu mengesyaki bahawa ia adalah masalah dengan klien Sebagai contoh, pengekodan antara klien dan pelayan adalah tidak konsisten. Saya juga mengesyaki bahawa fungsi alat jqGrid tiada contentType: "application/x-www-form-. urlencoded; charset=utf-8", dsb. dan lain-lain soalan.
Keputusannya adalah tidak, dan saya bergelut selama beberapa jam Kemudian, selepas diingatkan oleh Daniel, saya mendapati bahawa kod asal masih berada di bahagian pelayan, dan ia adalah satu kesilapan.
@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(); }