encodeURIComponent() + encodeURI()

今天就來(lái)聊聊encodeURIComponent()、encodeURI()、decodeURIComponent()、decodeURI()這幾個(gè)函數(shù)的用法和區(qū)別

對(duì)URL編碼個(gè)解碼?為什么會(huì)有這樣的函數(shù)

  • 一般說(shuō),url由一些英文字符、阿拉伯?dāng)?shù)字、某些特殊字符組成,不能使用其他的字符。如果有漢字組成的url就必須編碼之后使用,這樣的編碼過(guò)程都交給了瀏覽器自身決定,但是不同的瀏覽器會(huì)有不同的編碼方法,所以需要有統(tǒng)一的編碼方式...所以這幾個(gè)全局函數(shù)就起了作用!

全局函數(shù)encodeURIComponent()、encodeURI()

  1. 首先encodeURIComponent()、encodeURI()都是用來(lái)編碼
  2. 用法encodeURIComponent(URIstring),encodeURI(URIstring),對(duì)某些特殊字符進(jìn)行十六進(jìn)制的替換。
encodeURIComponent('http://baidu.com?a=12&b=12/12')
// http%3A%2F%2Fbaidu.com%3Fa%3D12%26b%3D12%2F12    全部'/'被編碼,導(dǎo)致url地址無(wú)效
encodeURI('http://baidu.com?a=12&b=12/12')
// http://baidu.com?a=12&b=12/12   '/'沒(méi)有被編碼  導(dǎo)致后面的參數(shù)帶有'/'的參數(shù)無(wú)法正確解析
  1. encodeURIComponent()encodeURI()區(qū)別
    (1)encodeURI(),更多的是針對(duì)對(duì)整個(gè)URL進(jìn)行編碼,它不會(huì)對(duì)特殊字符(; / ? : @ & + =等 )進(jìn)行編碼
    (2)encodeURIComponent()是對(duì)'?'后面的參數(shù)進(jìn)行編碼,它會(huì)對(duì)一些特殊字符(; / ? : @ & = + $ , #等)進(jìn)行編碼
// 正確的做法
let param = encodeURIComponent('a=12&b=12/12')
console.log(`http://baidu.com?${param}`)
// http://baidu.com?a%3D12%26b%3D12%2F12 
  1. 實(shí)用:
    (1)瀏覽器在get請(qǐng)求過(guò)程中,會(huì)在url后面加上一些參數(shù),這些參數(shù)中可能會(huì)有帶有某些特殊的字符或者漢字。根據(jù)不同的網(wǎng)頁(yè)編碼(<meta http-equiv="Content-Type" content="text/html;charset=xxxx">)方式會(huì)有不同編碼方式,在后臺(tái)接受這些參數(shù)的時(shí)候,會(huì)造成混亂。
    (2)js調(diào)用ajax發(fā)起請(qǐng)求,這個(gè)時(shí)候不同的瀏覽器發(fā)送的參數(shù)編碼方式不盡相同
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類(lèi)型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類(lèi)型 使用基本類(lèi)型...
    大學(xué)一百閱讀 3,666評(píng)論 0 4
  • ??引用類(lèi)型的值(對(duì)象)是引用類(lèi)型的一個(gè)實(shí)例。 ??在 ECMAscript 中,引用類(lèi)型是一種數(shù)據(jù)結(jié)構(gòu),用于將數(shù)...
    霜天曉閱讀 1,213評(píng)論 0 1
  • “ 曾經(jīng)我跟你同樣年齡時(shí),每個(gè)月的錢(qián)都是會(huì)合理分配的,比如說(shuō)我每月要求自己固定存多少,每月工資到手后就雷打不動(dòng)的存...
    蘇黎世在下雪閱讀 1,387評(píng)論 0 0
  • 姓名:董蘊(yùn)英 公司:沈陽(yáng)建筑裝飾裝修有限公司 【知~學(xué)習(xí)】 《六項(xiàng)精進(jìn)》大綱1遍 共113遍 《大學(xué)》開(kāi)篇1遍 共...
    董生活閱讀 139評(píng)論 0 0
  • 大家好,我是自由雪茄的自由君。 本訂閱號(hào)文章為雪茄愛(ài)好者交流學(xué)習(xí)分享之用,希望大家能夠以茄會(huì)友,在有共同愛(ài)好的基礎(chǔ)...
    自由雪茄閱讀 2,104評(píng)論 0 0

友情鏈接更多精彩內(nèi)容