uri编解码

相关函数如下:(都是全局函数)

encodeURI(URIString):将文本字符串编码为有效的统一资源标示符URI
decodeURI(URIString)

encodeURIComponent(s):编码URI的一部分或者是其他待编码的字符串
decodeURIComponent(s)


encodeURI编码规则:

  1、对于encodeURI(),ASCII字母、数字、"- _  .  !  ~ * ‘ ()"等标点不会编码;

  2、由于encodeURI用于编码URI,因而在uri中具有具有特殊意义的ASCII标点也不会编码,例如: ; / ? : @ = + $ , #

  3、uri中其他字符将被转换为对应的utf-8编码;

    1、0001—007E(ASCII字符)编码为%xx

    2、\u0080—\u07ff之间的unicode字符,用%xx%xx编码

    3、\u0800—\uffff 之间的unicode字符均被编码为%xx%xx%xx

    4、使用该方法编码时应确保URI中不包含? # 等字符,否则应该使用encodeURIComponent对uri每部分单独编码

 

encodeURIComponent:

  1、ASCII字母、数字、"- _  .  !  ~ * ‘ ()"等标点不会编码;

  2、/ ? : @ = + $ , #等用来分隔uri的会被编码

注意:

  1、ECMAScript3前可以使用escape()和unescape执行类似encodeURI的编码,现在已经弃用

  2、encodeURIComponent设参数是URI的一部分,因而用于分割URI不同部分的字符会被编码

  3、URI中包含/ ? : @ = + $ 等时应该用encodeURIComponent对uri每部分单独编码

  4、使用encodeURIComponent编码后,可以使用decodeURI解码也可以使用decodeURIcomponent解码



 

eg:

var uriEncode = encodeURI("http://www.cnblogs.com/wishyouhappy");
var uriDeocde = decodeURI(uriEncode);
console.log("uriEncode: " + uriEncode); //uriEncode: http://www.cnblogs.com/wishyouhappy
console.log("uriDeocde: " + uriDeocde); //uriDeocde: http://www.cnblogs.com/wishyouhappy 

//,/?:@&=+$#未被编码
var uriEncode = encodeURI(",/?:@&=+$#");
var uriDeocde = decodeURI(uriEncode);
console.log("uriEncode: " + uriEncode); //,/?:@&=+$#
console.log("uriDeocde: " + uriDeocde); //,/?:@&=+$# 

//此例中空格编码为%20, 汉字编码为%xx%xx%xx
var uriEncode = encodeURI("http://www.cnblogs.com?name = ‘流光‘");
var uriDeocde = decodeURI(uriEncode);
console.log("uriEncode: " + uriEncode); //http://www.cnblogs.com?name%20=%20‘%E6%B5%81%E5%85%89‘
console.log("uriDeocde: " + uriDeocde); // http://www.cnblogs.com?name = ‘流光‘ 

//使用encodeURIComponent编码后使用uriDeicode和uriDecodeComponent都可以解码
var uriEncode = encodeURIComponent("Are you happy?");
var uriDeocde = decodeURI(uriEncode);
var uriDecodeComponent = decodeURIComponent(uriEncode);
console.log("uriEncode: " + uriEncode); // Are%20you%20happy%EF%BC%9F
console.log("uriDeocde: " + uriDeocde); //Are you happy?
console.log("uriDecodeComponent: " + uriDecodeComponent); //Are you happy?

var uriEncode = encodeURIComponent(",/?:@&=+$#");
var uriDecodeComponent = decodeURIComponent(uriEncode);
console.log("uriEncode: " + uriEncode); //%2C%2F%3F%3A%40%26%3D%2B%24%23
console.log("uriDecodeComponent: " + uriDecodeComponent); //,/?:@&=+$# 

uri编解码,布布扣,bubuko.com

时间: 2024-10-24 23:53:13

uri编解码的相关文章

Android Base64 URI 编解码bad base-64异常处理

这篇随笔介绍一个常用的Base64对URI编解码时不容易发现的异常状况. Android使用NanoHTTPD作为HTTP服务器对外提供HTTP数据流传输的应用里,用Base64对一个资源进行了编码,如下(调试截图): 资源:/storage/emulated/0/Movies/The Mountain.mp4 Base64编码后:L3N0b3JhZ2UvZW11bGF0ZWQvMC9Nb3ZpZXMvVGhlIE1vdW50YWluLm1wNA== 此时该资源的链接是这样的:http://xx

Android实战技巧之三十七:图片的Base64编解码

通常用Base64这种编解码方式将二进制数据转换成可见的字符串格式,就是我们常说的大串,10块钱一串的那种,^_^. Android的android.util包下直接提供了一个功能十分完备的Base64类供我们使用,下面就演示一下如何将一张图片进行Base64的编解码. 1.找到那张图片 public void onEncodeClicked(View view) { //select picture Intent intent = new Intent(); intent.setType("i

视音频编解码基本术语及解释

摘要:          整理了一些基本视音频术语,用于入门和查询使用. H264: H264是视频的标准,是MPEG4-10,基于内容的高效编码方式. H.264/MPEG-4第10部分,或称AVC(AdvancedVideo Coding,高级视频编码),是一种视频压缩标准,一种被广泛使用的高精度视频的录制.压缩和发布格式.第一版标准的最终草案于 整理了一些基本视音频术语,用于入门和查询使用. H264: H264是视频的标准,是MPEG4-10,基于内容的高效编码方式. H.264/MPE

(中级篇 NettyNIO编解码开发)第十章-Http协议开发应用

HTTPC超文本传输协议〉协议是建立在TCP传输协议之上的应用层协议,它的发展是万维网协会和Internet工作小组IET'F合作的结果.HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过多年的使用和发展,得到了不断地完善和扩展.由于HTTP协议是目前Web开发的主流协议,基于HTTP的应用非常广泛,因此,掌握HTTP的开发非常重要,本章将重点介绍如何基于Netty的HTTP协议技进行HTTP服务端和客户端开发.由于Netty的

搞清tomcat中的编解码

http://www.xuebuyuan.com/1287083.html *********************************** 经常会被乱码问题搅得头晕脑胀.事实上,乱码问题涉及的地方比较多,所以常常有了问题也很难定位,比如,可以发生在容器,可以发生在MVC框架,可以发生在数据库,可以发生在响应等等. 这里分析一下tomcat中是如何编解码的. 以"http://localhost:8080/测试?网络=编程"为例,可以将tomcat中编解码分解为这么几个地方: 1

利用CxImage实现编解码Gif图像代码举例

Gif(GraphicsInterchange Format,图形交换格式)是由CompuServe公司在1987年开发的图像文件格式,分为87a和89a两种版本.Gif是基于LZW算法的无损压缩算法.Gif图像是基于颜色表的,最多只支持8位(256色).Gif减少了图像调色板中的色彩数量,从而在存储时达到减少图像文件大小的目的.Gif分为静态Gif和动画Gif两种,扩展名为.gif,是一种压缩位图格式,支持透明背景图像,适用于多种操作系统. 下面利用CxImage开源库,实现对Gif图像进行编

【H.264/AVC视频编解码技术具体解释】十三、熵编码算法(4):H.264使用CAVLC解析宏块的残差数据

<H.264/AVC视频编解码技术具体解释>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战project的形式对H.264的标准进行解析和实现,欢迎观看! "纸上得来终觉浅.绝知此事要躬行".仅仅有自己依照标准文档以代码的形式操作一遍,才干对视频压缩编码标准的思想和方法有足够深刻的理解和体会. 链接地址:H.264/AVC视频编解码技术具体解释 GitHub代码地址:点击这里 1. H.264的CAVLC

关于Tomcat上请求的编解码问题

最近翻阅<深入分析 Java Web 技术内幕>(作者:许令波),关于Tomcat上Web请求的编解码问题,少了一个小点,可能影响了部分读者的理解,我特意查证了一下,特总结如下: 1. 请求的PathInfo部分用Tomcat的Connector元素的URIEncoding属性指定的编码来解码. 具体使用可参考:https://tomcat.apache.org/tomcat-8.5-doc/config/http.html. 2. 第二先说请求体(POST正文)的解析,Tomcat按下次顺序

中文编解码问题

在做EIP审批接口是遇到中文编解码问题,现在将编解码过程记录如下: 前端Javascript: encodeURIComponent(string) 后端Java: string = new String(string.getBytes("ISO8859-1"), "UTF-8"); 附注(引用地址:http://blog.csdn.net/kalision/article/details/8640793): 发现原来在对后台java程序里的string赋值的时候,