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 相关文章推荐
javascript中运用闭包和自执行函数解决大量的全局变量问题
Dec 30 Javascript
jquery修改属性值实例代码(设置属性值)
Jan 06 Javascript
javascript中style.left和offsetLeft的用法说明
Mar 07 Javascript
JavaScript encodeURI 和encodeURIComponent
Dec 04 Javascript
Bootstrap每天必学之滚动监听
Mar 16 Javascript
原生JS简单实现ajax的方法示例
Nov 29 Javascript
js实现打地鼠小游戏
Feb 13 Javascript
ECMAScript6--解构
Mar 30 Javascript
详解vue-cli项目中怎么使用mock数据
May 29 Javascript
基于React Native 0.52实现轮播图效果
Aug 25 Javascript
详解Vue中使用Axios拦截器
Apr 22 Javascript
javascript实现滚轮轮播图片
Dec 13 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 Global定义全局变量使用说明
2013/08/15 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
JS实现div居中示例
2014/04/17 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
Python运行DLL文件的方法
2020/01/17 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
天网工程实施方案
2014/03/26 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
护士自我推荐信范文
2015/03/24 职场文书
长征观后感
2015/06/09 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书