JS解决url传值出现中文乱码的另类办法


Posted in Javascript onApril 08, 2013

 在开发web应用时,很多情况都需要进行前后台的数据交互,有时候我们可能需要把前台的中文数据通过URL的方式传递到后台,但此时有个令人头疼的问题,因为Java中网络传输使用的标准字符集是ISO-8859-1,所以在后台用request.getParameter("message");获取前台传过来的中文时,得到的还是ISO-8859-1字符集,中文就会出现乱码现象,好多人的解决办法是在前台传递中文之前进行decode,后台再decode一下进行转换,这样感觉很是麻烦,难道就没其他的方式解决吗?

       苦思冥想了一下:为什么用表单的方式就可以传递中文,而URL的方式就不行了呢?非得用URL传值的方式才能解决问题吗?这里我想到了动态表单,何不用它来解决呢,示例如下:

       假设有如下应用场景:KPI列表页面中,对每个KPI都有生成预警数据的功能,当点击列表中每个KPI生成数据的按钮时,需要把KPI的id和name传递到后台。

       前端对应的js方法:

         用URL传值的写法:

           function createData(indexId,indexName){
                     window.location.href="catalogAction.do?action=CreateIndexData&catalogId="+indexId+"&catalogName="+indexName+"&random="+Math.random();
                   }

用这种方法,由于KPI名称大多为中文,在后台接收到的值肯定为乱码。

若用动态生成表单的方式就可以解决:

function createData(indexId,indexName){
               var urlStr =  "catalogAction.do?action=CreateIndexData&PcatalogId=<c:out value='${catalogId}'/>&catalogId="+indexId+"&random="+Math.random();
               var f= document.createElement('form');
               f.action = urlStr;
               f.method = 'post';
               document.body.appendChild(f);
               var temp=document.createElement('input');
               temp.type= 'hidden';
               temp.value=indexName; 
               temp.name='catalogName';
               f.appendChild(temp);
               f.submit();
}

对中文字段用form的方式提交过去,不是中文的仍然用URL传,这样就轻松解决了向后台传递中文出现乱码的情况。
Javascript 相关文章推荐
Android中资源文件(非代码部分)的使用概览
Dec 18 Javascript
简介JavaScript中的getSeconds()方法的使用
Jun 10 Javascript
js代码实现无缝滚动(文字和图片)
Aug 20 Javascript
jquery的幻灯片图片切换效果代码分享
Sep 07 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
Jan 05 Javascript
javascript移动开发中touch触摸事件详解
Mar 18 Javascript
jstl中判断list中是否包含某个值的简单方法
Oct 14 Javascript
jquery实现左右滑动式轮播图
Mar 02 Javascript
vue中页面跳转拦截器的实现方法
Aug 23 Javascript
JavaScript继承的特性与实践应用深入详解
Dec 30 Javascript
浅谈React中组件逻辑复用的那些事儿
May 21 Javascript
vuex的使用步骤
Jan 06 Vue.js
JS继承--原型链继承和类式继承
Apr 08 #Javascript
原生js实现shift/ctrl/alt按键的获取
Apr 08 #Javascript
原生js实现跨浏览器获取鼠标按键的值
Apr 08 #Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
Apr 08 #Javascript
javascript中常用编程知识
Apr 08 #Javascript
利用webqq协议使用python登录qq发消息源码参考
Apr 08 #Javascript
setInterval,setTimeout与jquery混用的问题
Apr 08 #Javascript
You might like
php+mysql分页代码详解
2008/03/27 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
JS日历 推荐
2006/12/03 Javascript
jquery 新手学习常见问题解决方法
2010/04/18 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
微信小程序实现时间进度条功能
2020/11/17 Javascript
Python3 能振兴 Python的原因分析
2014/11/28 Python
python中__call__内置函数用法实例
2015/06/04 Python
Python实现的彩票机选器实例
2015/06/17 Python
Django实现自定义404,500页面教程
2017/03/26 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
HTML5的新特性(1)
2016/03/03 HTML / CSS
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
工作过失检讨书
2014/02/23 职场文书
大学活动总结格式
2014/04/29 职场文书
台风停课通知
2015/04/24 职场文书
烈士陵园观后感
2015/06/08 职场文书
Redis的字符串是如何实现的
2021/10/24 Redis
实现一个简单得数据响应系统
2021/11/11 Javascript
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL