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 处理Iframe自适应高度(同或不同域名下)
Mar 29 Javascript
Grunt入门教程(自动任务运行器)
Aug 06 Javascript
javascript中的五种基本数据类型
Aug 26 Javascript
JavaScript判断变量是否为数组的方法(Array)
Feb 24 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
May 25 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
Jun 23 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
Jan 12 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
Aug 25 Javascript
Vue2.0实现组件数据的双向绑定问题
Mar 06 Javascript
用vue快速开发app的脚手架工具
Jun 11 Javascript
js实现无刷新监听URL的变化示例代码详解
Jun 03 Javascript
vue中封装axios并实现api接口的统一管理
Dec 25 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
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
2020/04/13 PHP
javascript定义函数的方法
2010/12/06 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
namespace.js Javascript的命名空间库
2011/10/11 Javascript
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
JQuery中serialize()用法实例分析
2015/02/06 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
AngularJs定时器$interval 和 $timeout详解
2017/05/25 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
Python新手实现2048小游戏
2015/03/31 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
python中dict使用方法详解
2019/07/17 Python
Python @property装饰器原理解析
2020/01/22 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
竞选团支书演讲稿
2014/04/28 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
canvas实现贪食蛇的实践
2022/02/15 Javascript