javascript - 使用jqGrid查询IE传到后台的字符串乱码
PHP中文网
PHP中文网 2017-04-11 12:18:58
[JavaScript讨论组]

使用jqGrid框架查询时,遇到一个问题,用数字字母可以查询,而汉字在IE下不能查询。传给后台的值乱码了。

$('#roleList').jqGrid('setGridParam', {
            url : 'role/queryRoles?roleName=' + roleName+'&t='+new Date(),
            page : 1
        }).trigger('reloadGrid');
PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
PHP中文网

url编码格式是采用ASCII码,不是Unicode编码,在URL目录下不能包含中文,IE下好像是默认是使用UTF-8发送请求。中文发送还是中文,在解码是乱码。在发送前用encodeURIComponent进行转码

roleName = encodeURIComponent(roleName);
        postData.roleName = roleName;
        $('#roleList').jqGrid('setGridParam', {
            url : 'role/queryRoles?roleName=' + roleName+'&t='+new Date(),
            page : 1
        }).trigger('reloadGrid');
        这是jqGrid里面的一个问题,url适合放地址,带有中文字符的话就要转码。可以如下。不需要转码
  
    $('#roleList').jqGrid('setGridParam', {
        url : 'role/queryRoles',
         postData: {
            roleName: $('#roleName').val(),
            roleType:2,
        }
        page : 1
    }).trigger('reloadGrid');
        
PHP中文网

参数是汉字在IE下乱码?应该是汉字不管什么浏览器都乱码吧。你设置一下后端的request的编码方式试试。

天蓬老师

get方式提交的参数会跟在请求行中的uri后边,服务器按照默认的iso-8859-1进行解码,这时候解决乱码有两种办法:

办法一:修改服务器端对uri参数的默认编码
在tomcat的server.xml中,设置<Connector ….>元素的属性URIEncoding="UTF-8”即可。(默认没有设置此属性)

办法二:逆向操作
参数从浏览器到服务器,经过客户端utf-8编码,服务器端iso-8859-1解码,最终成为乱码。那我们将乱码进行相反的编解码,即可得到正常的参数值。
例如:String name = request.getParameter("name”);//得到乱码
name = new String(name.getBytes("iso-8859-1"),"utf-8”);//得到正常的name值

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号