最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 你需要知道的javascript中的编码与解码

    正文概述 掘金(water)   2020-12-13   367

    背景

    在 web 开发中,我们经常会和我网站 url 打交道。当我们跳转到一个其他网站的时候,也是通过 url 来进行跳转的。有时我们需要对 url 进行处理,例如拼接参数等。在一次开发中,我直接拿后台返回的 url 进行拼接参数,然后居然出错了。最后查到是因为 url 经过了转译编码,然后前端没有显示的进行解码操作,所以 url 地址是不正确的,由此用到了编码和解码,记录下自己踩过的坑。

    编码encodeURIComponent()和解码decodeURIComponent()

    1. encodeURIComponent() encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。 其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。 简单点就是能转的都给转了,例子如下:
    var uri = 'http://www.baidu.com?name=Tom&age=12&city=杭州'

    console.log(encodeURIComponent(uri))
    //输出 'http%3A%2F%2Fwww.baidu.com%3Fname%3DTom%26age%3D12%26city%3D%E6%9D%AD%E5%B7%9E'
    1. decodeURIComponent()是对 encodeURIComponent()编码的解码操作,把转译成正常的 url 链接
    var urlCode = 'http%3A%2F%2Fwww.baidu.com%3Fname%3DTom%26age%3D12%26city%3D%E6%9D%AD%E5%B7%9E'
    console.log(decodeURIComponent(urlCode))

    //输出 'http://www.baidu.com?name=Tom&age=12&city=杭州'

    编码encodeURI()和解码decodeURI()

    1. encodeURI() encodeURI() 函数可把字符串作为 URI 进行编码。 对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的: , / ? : @ & = + $ # (可以使用 encodeURIComponent() 方法分别对特殊含义的 ASCII 标点符号进行编码。).

    简单点就是对 url 进行部分转译,例子如下:

    var url = 'http://www.baidu.com?name=Tom&age=12&city=杭州'
    console.log(encodeURI(url))
    //输出 'http://www.baidu.com?name=Tom&age=12&city=%E6%9D%AD%E5%B7%9E'
    1. decodeURI 是 encodeURI 编码的 URI 进行解码
    var urlCode = 'http://www.baidu.com?name=Tom&age=12&city=%E6%9D%AD%E5%B7%9E'
    console.log(encodeURI(urlCode))
    //输出 'http://www.baidu.com?name=Tom&age=12&city=杭州'

    编码escape()和解码unescape()

    1. escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。
     var str = "http://www.baidu.com?name=Tom&age=12&city=杭州"
     console.log(escape(str))
     //输出 'http%3A//www.baidu.com%3Fname%3DTom%26age%3D12%26city%3D%u676D%u5DDE'
     
     var str = "爱我中华"
     console.log(escape(str))
     //输出 '%u7231%u6211%u4E2D%u534E'
    1. unescape()函数是对escape()编码的进行解码(备注:ECMAScript v3 已从标准中删除了 unescape() 函数,并反对使用它,因此应该用 decodeURI() 和 decodeURIComponent() 取而代之)
    var str = "http%3A//www.baidu.com%3Fname%3DTom%26age%3D12%26city%3D%u676D%u5DDE"
    console.log(unescape(str))
    //输出 'http://www.baidu.com?name=Tom&age=12&city=杭州'
    var str = "%u7231%u6211%u4E2D%u534E"
    console.log(unescape(str))
    //输出 '爱我中华'

    小结

    如果是对url整个进行编码解码就使用:encodeURIComponent()、decodeURIComponent()

    如果是对url的参数进行编码解码就使用:encodeURI()、decodeURI()

    如果是对字符串进行编码解码就使用:unescape()函数是对escape(),unescape()已被废弃请使用最新api

    觉的有帮助的帮忙给个赞,在此谢过!!!


    下载网 » 你需要知道的javascript中的编码与解码

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元