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 相关文章推荐
jQuery 操作XML入门
Dec 25 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
Jul 12 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
Mar 21 Javascript
多种方法实现JS动态添加事件
Nov 01 Javascript
JavaScript中使用参数个数实现重载功能
Sep 01 Javascript
使用Electron构建React+Webpack桌面应用的方法
Dec 15 Javascript
webpack 插件html-webpack-plugin的具体使用
Apr 09 Javascript
Element UI 自定义正则表达式验证方法
Sep 04 Javascript
使用react render props实现倒计时的示例代码
Dec 06 Javascript
node错误处理与日志记录的实现
Dec 24 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
Jan 29 Javascript
解决layer 动态加载select 失效的问题
Sep 18 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页面缓存ob系列函数介绍
2012/10/18 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
javascript显示动态时间的方法汇总
2018/07/06 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
2019/09/25 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
python中的格式化输出用法总结
2016/07/28 Python
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
Python序列循环移位的3种方法推荐
2018/04/09 Python
利用python如何处理nc数据详解
2018/05/23 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
简单谈谈python基本数据类型
2018/09/26 Python
详解python-图像处理(映射变换)
2019/03/22 Python
python实现滑雪者小游戏
2020/02/22 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
Python Dataframe常见索引方式详解
2020/05/27 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
Python基于execjs运行js过程解析
2020/11/27 Python
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
韩国现代百货官网:Hmall
2018/03/21 全球购物
环境整治工作方案
2014/05/18 职场文书
金融专业毕业生自荐信
2014/06/26 职场文书
会议开幕词
2015/01/28 职场文书
人民检察院起诉书
2015/05/20 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers