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使用activex控件的代码
Jan 27 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
Oct 16 Javascript
JavaScript返回网页中超链接数量的方法
Apr 03 Javascript
Jquery日历插件制作简单日历
Oct 28 Javascript
JS DOM实现鼠标滑动图片效果
Sep 17 Javascript
Vue的elementUI实现自定义主题方法
Feb 23 Javascript
浅谈React 服务器端渲染的使用
May 08 Javascript
Angular6笔记之封装http的示例代码
Jul 27 Javascript
微信小程序实现的canvas合成图片功能示例
May 03 Javascript
Vue实现表格批量审核功能实例代码
May 28 Javascript
vue项目中将element-ui table表格写成组件的实现代码
Jun 12 Javascript
vue - props 声明数组和对象操作
Jul 30 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
基于PHP array数组的教程详解
2013/06/05 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
日期 时间js控件
2009/05/07 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
2013/07/18 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
怎样在vue项目下添加ESLint的方法
2019/05/16 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
Python 多线程Threading初学教程
2017/08/22 Python
Python延时操作实现方法示例
2018/08/14 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
python opencv读mp4视频的实例
2018/12/07 Python
Python3分析处理声音数据的例子
2019/08/27 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
专项法律服务方案
2014/06/11 职场文书
护理专科学生自荐书
2014/07/05 职场文书
含预算的公司户外活动方案
2014/08/16 职场文书
幼儿园感谢信
2015/01/21 职场文书
Python使用华为API为图像设置多个锚点标签
2022/04/12 Python
Java存储没有重复元素的数组
2022/04/29 Java/Android