zoukankan      html  css  js  c++  java
  • javascript中可用的编码解码函数

    在项目实践中可能会遇到一些特殊字符的转义问题,那么这个时候就需要js编码解码函数来解决这些情况了:

    特殊字符的含义 
    URL编码 

    符号 解释 转义
    # 用来标志特定的文档位置 %23
    % 对特殊字符进行编码 %25
    & 分隔不同的变量值对 %26
    + 在变量值中表示空格 %2B
    / 表示目录路径 %2F
    表示目录路径 %5C
    = 用来连接键和值 %3D
    ? 表示查询字符串的开始 %3F
    空格 空格 %20
    . 句号 %2E
    : 冒号 %3A
    javascript中可用的编码解码函数,有如下的组合:
    
    escape(string); 
    unescape(string);
    encodeURI(string); 
    decodeURI(string);
    encodeURIComponent(string); 
    decodeURIComponent(string);

    他们之间的区别为:

    escape/unescape: 
    以16进制编码字符串,对空格、符号等字符用%xx编码表示,对中文等字符用%uxxxx编码表示。自javascript1.5之后,此方法已经不被推荐使用。

    encodeURI/decodeURI: 
    以UTF-8编码编码字符串,对这些字符:“ ; , / ? : @ & = + $ ”不做编码。

    encodeURIComponent/decodeURIComponent: 
    以UTF-8编码编码所有字符串。

    因为escape/unescape已经deprecated。就不说它了,encodeURI和encodeURIComponent之前的区别用实例说明:

    比如说要使用get方式将一个参数u,传递给服务器:

    var  u="index.php?blogId=1&op=Default"; 
    var  getURL="http://www.simplelife.cn/test.php?p="+encodeURI(u);

    这里,如果使用了encodeURI,那么最终的getURL的值为: 
    http://www.simplelife.cn/test.php?p=index.php?blogId=1&op=Default

    这样,对参数u中的字符"&op=Default",将不会作为字符串参数传递到服务器端,而是当作test.php的参数传递过去了,因为对"&op=Default"中的字符"&"没有做编码。 
    所以,在这种应用场景下,就需要使用encodeURIComponent,编码后的getURL值为: 
    http://www.simplelife.cn/test.php?p=index.php%3FblogId%3D1%26op%3DDefault

    这样,参数就可以顺利传递过去了。在服务器端得到的字符串将是正确的u。 

    反之,如果需要通过get方式访问某一URL,但是URL中包含中文等字符,为了防止乱码等编码问题,需要将URL通过encodeURI进行编码。
     
    备注说明:
    关于escape不能编码英文下的小括号的问题(因为英文小括号使用概率偏高)可以这样来写:
    encodeURI(string.replace(/(/g,"(").replace(/)/g,")"))
  • 相关阅读:
    LA 3938 动态最大连续和 线段树
    UVA 11235 频繁出现的数值 RMQ
    LA 4329 ping-pong树状数组
    LA 3027 合作网络 并查集
    vue-url传参
    vue打开新页面的几种方式
    父子组件传参
    vue--按钮级别的权限控制+插件的使用
    小程序填坑
    webpack小试牛刀
  • 原文地址:https://www.cnblogs.com/web001/p/9920559.html
Copyright © 2011-2022 走看看