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 相关文章推荐
iframe 父窗口和子窗口相互的调用方法集锦
Dec 15 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
Dec 19 Javascript
Uploadify上传文件方法
Mar 16 Javascript
微信小程序 tabs选项卡效果的实现
Jan 05 Javascript
js判断手机号是否正确并返回的实现代码
Jan 17 Javascript
详解基于webpack2.x的vue2.x的多页面站点
Aug 21 Javascript
简易Vue评论框架的实现(父组件的实现)
Jan 08 Javascript
js中如何完美的解析数据
Mar 18 Javascript
微信小程序使用template标签实现五星评分功能
Nov 03 Javascript
JavaScript继承的特性与实践应用深入详解
Dec 30 Javascript
JQuery的加载和选择器用法简单示例
May 13 jQuery
Vue+Flask实现图片传输功能
Apr 01 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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
php的$_FILES的临时储存文件与回收机制实测过程
2013/07/12 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
详解Vue之父子组件传值
2019/04/01 Javascript
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
Python中sys模块功能与用法实例详解
2020/02/26 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
电气自动化自荐信
2013/10/10 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
2015年干部教育培训工作总结
2015/05/15 职场文书
关爱空巢老人感想
2015/08/11 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
Go web入门Go pongo2模板引擎
2022/05/20 Golang
MySQL普通表如何转换成分区表
2022/05/30 MySQL