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 相关文章推荐
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
Feb 18 Javascript
深入浅析JavaScript中对事件的三种监听方式
Sep 29 Javascript
JavaScript中日常收集常见的10种错误(推荐)
Jan 08 Javascript
Android中Okhttp3实现上传多张图片同时传递参数
Feb 18 Javascript
Vue 2.X的状态管理vuex记录详解
Mar 23 Javascript
React Native 真机断点调试+跨域资源加载出错问题的解决方法
Jan 18 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
Feb 13 jQuery
原生JS封装_new函数实现new关键字的功能
Aug 12 Javascript
JavaScript实现京东放大镜效果
Dec 03 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
Feb 14 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
May 31 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 jQuery
在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链接MySQL的常用扩展函数
2014/10/23 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
php文件上传类的分享
2017/07/06 PHP
表单元素事件 (Form Element Events)
2009/07/17 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
elementui实现预览图片组件二次封装
2020/12/29 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
Python设计模式之代理模式实例
2014/04/26 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
基于Python的OCR实现示例
2020/04/03 Python
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
Merrell迈乐澳大利亚网站:购买户外登山鞋
2017/05/28 全球购物
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
安全生产检查通报
2014/01/29 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
民事上诉状范文
2015/05/22 职场文书
生日寿星公答谢词
2015/09/29 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android