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弹窗代码 可以指定弹出间隔
Jul 03 Javascript
js使用for循环及if语句判断多个一样的name
Sep 09 Javascript
javascript格式化日期时间方法汇总
Jun 19 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
Aug 05 Javascript
jQuery实现简单的计时器功能实例分析
Aug 29 jQuery
浅谈webpack编译vue项目生成的代码探索
Dec 11 Javascript
基于vue2.x的电商图片放大镜插件的使用
Jan 22 Javascript
vue左右侧联动滚动的实现代码
Jun 06 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
Dec 06 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
Aug 16 Javascript
jquery传参及获取方式(两种方式)
Feb 13 jQuery
Vue全家桶入门基础教程
May 14 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将csv文件导入到mysql数据库的方法
2014/12/24 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
Python下的subprocess模块的入门指引
2015/04/16 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
Python正则表达式知识汇总
2017/09/22 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
Python使用tkinter库实现文本显示用户输入功能示例
2018/05/30 Python
Python中按值来获取指定的键
2019/03/04 Python
python Tkinter的图片刷新实例
2019/06/14 Python
python读写csv文件实例代码
2019/07/05 Python
Django的models模型的具体使用
2019/07/15 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
信息管理与信息系统专业求职信
2014/06/21 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
教务处教学工作总结
2015/08/10 职场文书
七夕情人节问候语
2015/11/11 职场文书
python 算法题——快乐数的多种解法
2021/05/27 Python