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 相关文章推荐
基于jQuery的history历史记录插件
Dec 11 Javascript
Jquery实现的tab效果可以指定默认显示第几页
Oct 16 Javascript
比较新旧两个数组值得增加和删除的JS代码
Oct 30 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
Mar 04 Javascript
js实现匹配时换色的输入提示特效代码
Aug 17 Javascript
浏览器兼容性问题大汇总
Dec 17 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
Jul 12 Javascript
微信小程序 首页制作简单实例
Apr 07 Javascript
微信小程序使用Socket的实例
Sep 19 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
Jan 16 Javascript
24行JavaScript代码实现Redux的方法实例
Nov 17 Javascript
使用preload预加载页面资源时注意事项
Feb 03 Javascript
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 数据库树的遍历方法
2009/02/06 PHP
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
ThinkPHP入口文件设置及相关注意事项分析
2014/12/05 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
HTML5附件拖拽上传drop &amp; google.gears实现代码
2011/04/28 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
跟我学习javascript的闭包
2015/11/16 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
从零学Python之入门(二)基本数据类型
2014/05/25 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
使用Python对Access读写操作
2017/03/30 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
python字符串查找函数的用法详解
2019/07/08 Python
Python的缺点和劣势分析
2019/11/19 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
学前教育毕业生自荐信范文
2013/12/24 职场文书
会计学自荐信
2014/06/03 职场文书
社区维稳工作方案
2014/06/06 职场文书
值班管理制度范本
2015/08/06 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python
世界十大儿童漫画书排名,法国国宝漫画排第五,第二是轰动日本连环
2022/03/18 欧美动漫
TypeScript 内置高级类型编程示例
2022/09/23 Javascript