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插件Tabs实现过程
Jul 06 Javascript
js比较和逻辑运算符的介绍
Mar 10 Javascript
js解析json读取List中的实体对象示例
Mar 11 Javascript
javascript动态创建链接的方法
May 13 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
Nov 02 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
Dec 13 Javascript
vue项目中实现的微信分享功能示例
Jan 21 Javascript
JSON.stringify()方法讲解
Jan 31 Javascript
详解小程序退出页面时清除定时器
Apr 28 Javascript
layui 上传图片 返回图片地址的方法
Sep 26 Javascript
vue调用语音播放的方法
Sep 27 Javascript
微信小程序接入腾讯云验证码的方法步骤
Jan 07 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_MySQL教程-第一天
2007/03/18 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
jQuery 检查某个元素在页面上是否存在实例代码
2016/10/27 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python实现的HTTP并发测试完整示例
2020/04/23 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
学院领导推荐信
2013/10/30 职场文书
化学专业毕业生自荐信
2013/11/15 职场文书
自我评价怎么写正确呢?
2013/12/02 职场文书
优秀的自荐信要注意哪些
2014/01/03 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
2015年中秋寄语
2015/07/31 职场文书
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js