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 相关文章推荐
js用图作提交按钮或超连接
Mar 26 Javascript
javascript使用正则控制input输入框允许输入的值方法大全
Jun 19 Javascript
学习javascript面向对象 javascript实现继承的方式
Jan 04 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
Sep 14 Javascript
Bootstrap企业网站实战项目4
Oct 14 Javascript
js的三种继承方式详解
Jan 21 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
微信小程序开发之路由切换页面重定向问题
Sep 18 Javascript
Mint UI实现A-Z字母排序的城市选择列表
Dec 28 Javascript
JS温故而知新之变量提升和时间死区
Jan 27 Javascript
js实现简单图片拖拽效果
Feb 22 Javascript
vue首次渲染全过程
Apr 21 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
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
PHP也能干大事之PHP中的编码解码详解
2015/04/20 PHP
javascript 闭包
2011/09/15 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
javascript实现延时显示提示框特效代码
2016/04/27 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
python re正则表达式模块(Regular Expression)
2014/07/16 Python
Python实现SVN的目录周期性备份实例
2015/07/17 Python
Python 基础教程之包和类的用法
2017/02/23 Python
Python人脸识别初探
2017/12/21 Python
详解Python之unittest单元测试代码
2018/01/24 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
python绘制简单彩虹图
2018/11/19 Python
django云端留言板实例详解
2019/07/22 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
Python虚拟环境venv用法详解
2020/05/25 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
毕业生自荐书模版
2014/01/04 职场文书
企业年检委托书范本
2014/10/14 职场文书
高中物理教学反思
2016/02/19 职场文书
了解Redis常见应用场景
2021/06/23 Redis
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android