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 相关文章推荐
jQuery toggle()设置CSS样式
Nov 05 Javascript
IE下js调试工具Companion.JS
Oct 15 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
Jan 21 Javascript
jQuery获取选中单选按钮radio的值
Dec 27 Javascript
javascript按钮禁用和启用的效果实例代码
Oct 29 Javascript
p5.js入门教程之键盘交互
Mar 19 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
Mar 21 Javascript
Vue异步组件处理路由组件加载状态的解决方案
Sep 07 Javascript
jquery登录的异步验证操作示例
May 09 jQuery
小程序云开发如何实现图片上传及发表文字
May 17 Javascript
JS工厂模式开发实践案例分析
Oct 17 Javascript
vue动态渲染svg、添加点击事件的实现
Mar 13 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
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
phpStorm+XDebug+chrome 配置详解
2019/04/01 PHP
js实现DIV的一些简单控制
2007/06/04 Javascript
WordPress 插件——CoolCode使用方法与下载
2007/07/02 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
基于JQuery的cookie插件
2010/04/07 Javascript
js动态生成指定行数的表格
2013/07/11 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
python基础教程之循环介绍
2014/08/29 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
使用Python开发SQLite代理服务器的方法
2018/12/07 Python
python爬虫超时的处理的实例
2018/12/19 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
python实现图片压缩代码实例
2019/08/12 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
歌颂祖国的演讲稿
2014/05/04 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
检讨书怎么写
2015/01/23 职场文书
文艺委员竞选稿
2015/11/19 职场文书