url 特殊字符 传递参数解决方法


Posted in Javascript onJanuary 01, 2010

十六进制值
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL 中指定的参数间的分隔符 %26
8. = URL 中指定参数的值 %3D

解决的方法:
replace() 方法如果直接用str.replace("-","!") 只会替换第一个匹配的字符.
而str.replace(/\-/g,"!")则可以替换掉全部匹配的字符(g为全局标志)。
replace()
js中替换字符变量如下:

 data2=data2.replace(/\%/g,"%25");
 data2=data2.replace(/\#/g,"%23");
 data2=data2.replace(/\&/g,"%26");

其他一些资料。。。仅供参考。。。

在使用url进行参数传递时,经常会传递一些中文名(或含有特殊字符)的参数或URL地址,在后台处理时会发生转换错误。在有些传递页面使用GB2312,而在接收页面使用UTF8,这样接收到的参数就可能会与原来发生不一致。使用服务器端的urlEncode函数编码的URL,与使用客户端java的encodeURI函数编码的URL,结果就不一样。

java对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

java中的编码方法:
escape() 方法:采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / +

encodeURI()方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '

encodeURIComponent ()方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( )

因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用 escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者 encodeURIComponent。

另外,encodeURI/encodeURIComponent是在java1.5之后引进的,escape则在java1.0版本就有。
1、  传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。

   例如:< language="java">write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</>

2、  进行url跳转时可以整体使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3、  js使用数据时可以使用escape

例如:搜藏中history纪录。

4、  escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。

最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.

Javascript 相关文章推荐
基于jquery的模态div层弹出效果
Aug 21 Javascript
JavaScript使用Replace进行字符串替换的方法
Apr 14 Javascript
ECMAScript6块级作用域及新变量声明(let)
Jun 12 Javascript
jQuery手机拨号界面特效代码分享
Aug 27 Javascript
jquery对象访问是什么及使用方法介绍
May 03 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
May 16 Javascript
JavaScript解析JSON格式数据的方法示例
Jan 24 Javascript
js实现图片轮播效果学习笔记
Jul 26 Javascript
一个手写的vue放大镜效果
Aug 09 Javascript
使用Vue调取接口,并渲染数据的示例代码
Oct 28 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
Oct 31 Javascript
js实现上传按钮并显示缩略图小轮子
May 04 Javascript
JavaScript 数组循环引起的思考
Jan 01 #Javascript
javascript eval和JSON之间的联系
Dec 31 #Javascript
js下用gb2312编码解码实现方法
Dec 31 #Javascript
JavaScript 学习笔记(七)字符串的连接
Dec 31 #Javascript
JavaScript 学习笔记(六)
Dec 31 #Javascript
JavaScript 学习笔记(五)
Dec 31 #Javascript
JavaScript 学习笔记(四)
Dec 31 #Javascript
You might like
php笔记之常用文件操作
2010/10/12 PHP
php在window iis的莫名问题的测试方法
2013/05/14 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
豆瓣网的jquery代码实例
2008/06/15 Javascript
js计算页面刷新的次数
2009/07/20 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
VUE使用axios调用后台API接口的方法
2020/08/03 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
python实现学生管理系统开发
2020/07/24 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
Hotels.com越南:酒店预订
2019/10/29 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
大学毕业生通用求职信
2013/09/28 职场文书
十八届三中全会学习方案
2014/02/16 职场文书
产品委托授权书范本
2014/09/16 职场文书
每日六道java新手入门面试题,通往自由的道路
2021/06/30 Java/Android
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python