JS对URL字符串进行编码/解码分析


Posted in Javascript onOctober 25, 2008

虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响URL完整性的特殊
字符进行过滤。但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至导致的乱码问
题。例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是
UTF-8),使用escape()转换传输中文字串就会出现乱码问题。
以下是JS下对URL进行编/解码的各种方法:
escape 方法:返回一个可在所有计算机上读取的编码 String 对象。
function escape(charString : String) : String
不会被此方法编码的字符: @ * / +
说明:escape 方法返回一个包含 charstring 内容的字符串值(Unicode 格式)。所有空格、标点、
重音符号以及任何其他非 ASCII 字符都用 %xx 编码替换,其中 xx 等于表示该字符的十六进制数。
例如,空格返回为“%20”。(字符值大于 255 的字符以 %uxxxx 格式存储。)
注意:escape 方法不能用来对“统一资源标识符”(URI) 进行编码。对其编码应使用 encodeURI 和
encodeURIComponent 方法。
encodeURI 方法:返回编码为有效的统一资源标识符 (URI) 的字符串。
function encodeURI(URIString : String) : String
不会被此方法编码的字符:! @ # $ & * ( ) = : / ; ? + '
说明:encodeURI 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的
字符串。encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用
encodeURIComponent 对这些字符进行编码。
encodeURIComponent 方法:返回编码为统一资源标识符 (URI) 的有效组件的字符串。
function encodeURIComponent(encodedURIString : String) : String
不会被此方法编码的字符:! * ( ) '
说明:encodeURIComponent 方法返回一个已编码的 URI。如果将编码结果传递给
decodeURIComponent,则将返回初始的字符串。因为 encodeURIComponent 方法将对所有字符编码,
请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,则其中的斜杠也将被
编码,这样,当该字符串作为请求发送到 Web 服务器时它将是无效的。如果字符串中包含多个 URI
组件,请使用 encodeURI 方法进行编码。
unescape 方法:从用 escape 方法编码的 String 对象中返回已解码的字符串。
function unescape(charString : String) : String
说明:unescape 方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的
字符都用 ASCII 字符集当中等效的字符代替。(以 %uxxxx 格式(Unicode 字符)编码的字符用十六
进制编码 xxxx 的 Unicode 字符代替。)
注意:unescape 方法不应用于解码“统一资源标识符”(URI)。请改用 decodeURI 和
decodeURIComponent 方法。
decodeURI 方法:返回一个已编码的统一资源标识符 (URI) 的非编码形式。
function decodeURI(URIstring : String) : String
decodeURIComponent 方法:返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。
function decodeURIComponent(encodedURIString : String) : String
BTW:C#中对URL编码的方法。。。
编码:Server.UrlEncode(string)
解码:Server.UrlDecode(string) 前面三种客户端编码都可以用这个方法在后台解码。

Javascript 相关文章推荐
JS.getTextContent(element,preformatted)使用介绍
Sep 21 Javascript
解决jquery插件冲突的问题
Jan 23 Javascript
JS数组去重与取重的示例代码
Jan 24 Javascript
使用jQuery jqPlot插件绘制柱状图
Dec 18 Javascript
javascript批量修改文件编码格式的方法
Jan 27 Javascript
js+html5实现canvas绘制圆形图案的方法
Jun 05 Javascript
图解js图片轮播效果
Dec 20 Javascript
微信小程序 Record API详解及实例代码
Sep 30 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
Oct 24 Javascript
JS创建对象的写法示例
Nov 04 Javascript
Angular弹出模态框的两种方式
Oct 19 Javascript
Node.js中文件系统fs模块的使用及常用接口
Mar 06 Javascript
在html页面中包含共享页面的方法
Oct 24 #Javascript
IE浏览器兼容Firefox的JS脚本的代码
Oct 23 #Javascript
Javascript客户端将指定区域导出到Word、Excel的代码
Oct 22 #Javascript
checkbox 多选框 联动实现代码
Oct 22 #Javascript
javascript网页关闭时提醒效果脚本
Oct 22 #Javascript
javascript Select标记中options操作方法集合
Oct 22 #Javascript
JavaScript Undefined,Null类型和NaN值区别
Oct 22 #Javascript
You might like
php计算两个日期相差天数的方法
2015/03/14 PHP
javascript Demo模态窗口
2009/12/06 Javascript
javascript 函数使用说明
2010/04/07 Javascript
js对象与打印对象分析比较
2013/04/23 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
如何编写高质量JS代码
2014/12/28 Javascript
JavaScript数组Array对象增加和删除元素方法总结
2015/01/20 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
原生JS封装拖动验证滑块的实现代码示例
2020/06/01 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
利用Python学习RabbitMQ消息队列
2015/11/30 Python
python设计模式大全
2016/06/27 Python
python 自动去除空行的实例
2018/07/24 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
python 多进程队列数据处理详解
2019/12/23 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
匡威英国官网:Converse英国
2018/12/02 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
消防安全员岗位职责
2014/03/10 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
2014年财政局工作总结
2014/12/09 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
消防演习感想
2015/08/10 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
springboot中的pom文件 project报错问题
2022/01/18 Java/Android