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 相关文章推荐
关于取不到由location.href提交而来的上级页面地址的解决办法
Jul 30 Javascript
JavaScript 高效运行代码分析
Mar 18 Javascript
node.js中的fs.rmdir方法使用说明
Dec 16 Javascript
jQuery动态修改超链接地址的方法
Feb 13 Javascript
Angularjs的$http异步删除数据详解及实例
Jul 27 Javascript
微信小程序实现下拉刷新和轮播图效果
Nov 21 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
Jan 16 Javascript
javascript获取元素的计算样式
May 24 Javascript
vue组件内部引入外部js文件的方法
Jan 18 Javascript
ES6 Iterator遍历器原理,应用场景及相关常用知识拓展详解
Feb 15 Javascript
Vue 数据响应式相关总结
Jan 28 Vue.js
Vue接口封装的完整步骤记录
May 14 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
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
php 面向对象的一个例子
2011/04/12 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
解析PHP实现下载文件的两种方法
2013/07/05 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
python进阶教程之动态类型详解
2014/08/30 Python
import的本质解析
2017/10/30 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
关于Assembly命名空间的三个面试题
2015/07/23 面试题
外贸采购员求职的自我评价
2013/11/26 职场文书
安全生产先进个人材料
2014/02/06 职场文书
社区工作者演讲稿
2014/05/23 职场文书
市场营销计划书范文
2015/01/16 职场文书
学校食堂管理制度
2015/08/04 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书