第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于請求主體是否要用encodeURIComponent()來編譯

老師的課很不錯,非常容易懂。不過我之前看《JavaScript權威指南》這本書中的http請求這部分內容時,它說在編輯post請求主體時,要將表單的數(shù)據(jù)編碼,還用到了encodeURIComponent()這樣的方法,好像是要轉化成一種更復雜的字符串。但我看老師做的post請求的請求主體就只是把名值對用‘&’拼在一起,這是怎么回事???哪會前輩回答一下。謝謝。

正在回答

1 回答

著作權歸作者所有。
商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處。
作者:黑貓
鏈接:https://www.zhihu.com/question/21861899/answer/43480575
來源:知乎

escape 和 encodeURI 都屬于 Percent-encoding,基本功能都是把 URI 非法字符轉化成合法字符,轉化后形式類似「%*」。它們的根本區(qū)別在于,
escape 在處理 0xff 之外字符的時候,是直接使用字符的 unicode 在前面加上一個 「%u」,而encodeURI則是先進行 UTF-8,再在 UTF-8 的每個字節(jié)碼前加上一個 「%」;
在處理 0xff 以內字符時,編碼方式是一樣的(都是「%XX」,XX為字符的 16 進制 unicode,同時也是字符的 UTF-8),只是范圍(即哪些字符編碼哪些字符不編碼)不一樣。(楊易提醒)
encodeURI 是W3C 的標準,而 Escape 是非標準。

舉一個例子:
知乎的「知」字,可以知道它的 unicode 為 0x77e5,對它進行 UTF-8 編碼,變成了三個字節(jié):0xe7, 0x9f, 0xa5
因此,如果是使用 escape 編碼「知」,得到的結果就是 「%u77E5」;encodeURI 得到的結果則是 「%E7%9F%A5」

Escape 的編碼有一個弊端在于,它后面是 4 位 16 進制,故不支持基本多文種平面(BMP)外的字符(unicode 大于 0xffff)的字符;
而 encodeURI 是基于 UTF-8 的,編碼本身理論上可以支持 0x10ffff 內的字符(實際上現(xiàn)在的 JavaScript 不支持 BMP 外的字符,所以 encodeURI 也不支持 )。

encodeURI 和 encodeURIComponent 的區(qū)別在于需要轉義的字符范圍不一樣,參考 @黃家興 的答案。
使用場景方面,也可以可以參考他的答案,但是不同意這一句:

如果只是編碼字符串,不和URL有半毛錢關系,那么用escape。

encodeURI(Component) ?一般用在 URI 上,但是不是一定就要用在 URL 上。比如如果 POST 請求的 Request Header 中 Content-Type 為「application/x-www-form-urlencoded」, 那么 Request Payload 里面的數(shù)據(jù)一般就是使用 encodeURI(Component) 編碼的。(和 URL 的 querystring 一樣)。


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Ajax全接觸
  • 參與學習       224773    人
  • 解答問題       708    個

本課程通過一個案例,講解Ajax的相關概念原理實現(xiàn)方式和應用

進入課程

關于請求主體是否要用encodeURIComponent()來編譯

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號