JQuery异步获取返回值中文乱码的解决方法


Posted in Javascript onJanuary 29, 2015

用jqgrid异步获取列表值,遇到个问题,服务器端从数据库取到的数据没有出现中文乱码问题(日志打出来是没有乱码的),但是异步传到客户的时候却出现了乱码。 服务器端已经编码过了(UTF-8编码)。开始一直怀疑是客户端的问题,比如客户端和服务器端编码不一致啊,也怀疑是不是jqGrid工具函数中少配了 contentType: "application/x-www-form-urlencoded; charset=utf-8",   等等问题。

结果都不是,纠结了几个小时,后来经过大牛的提醒发现,原来代码还是出在服务器端,疏忽了。

@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();
  }
Javascript 相关文章推荐
JavaScript 计算当天是本年本月的第几周
Mar 22 Javascript
js DOM 元素ID就是全局变量
Sep 20 Javascript
js 剪切板应用clipboardData详细解析
Dec 17 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
Oct 11 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
Oct 17 Javascript
angularjs 表单密码验证自定义指令实现代码
Oct 27 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
Dec 01 Javascript
webpack配置打包后图片路径出错的解决
Apr 26 Javascript
JavaScript 性能提升之路(推荐)
Apr 10 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
Jun 26 Javascript
Vue通过provide inject实现组件通信
Sep 03 Javascript
React-vscode使用jsx语法的问题及解决方法
Jun 21 Javascript
AngularJS中的模块详解
Jan 29 #Javascript
jquery结合CSS使用validate实现漂亮的验证
Jan 29 #Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
Jan 29 #Javascript
推荐一个自己用的封装好的javascript插件
Jan 29 #Javascript
js实现点击左右按钮轮播图片效果实例
Jan 29 #Javascript
JavaScript中实现继承的三种方式和实例
Jan 29 #Javascript
javascript面向对象程序设计(一)
Jan 29 #Javascript
You might like
php简单创建zip压缩文件的方法
2016/04/30 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
2016/08/11 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
Mac下Anaconda的安装和使用教程
2018/11/29 Python
Python常用库大全及简要说明
2020/01/17 Python
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
计算机软件个人的自荐信范文
2013/12/01 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
学生个人评语大全
2015/01/04 职场文书
司机个人年终总结
2015/03/03 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
SQL之各种join小结详细讲解
2021/08/04 MySQL
MySQL连接控制插件介绍
2021/09/25 MySQL
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
Python软件包安装的三种常见方法
2022/07/07 Python
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL