鍍金池/ 問答/PHP  Linux  HTML/ js前端和php后端對(duì)url編解碼處理方式不一致的問題

js前端和php后端對(duì)url編解碼處理方式不一致的問題

php的解碼方式是urldecode,前端的編碼方式有escape,encodeURI,encodeURIComponent這三種,escape出來的url,php可以正常解析出來,但是escape不支持ES6,其他兩種方式php不能解析正確,有什么好的解決方案?

回答
編輯回答
心上人

URI部分用encodeURI,參數(shù)部分用encodeURIComponent,這樣才是相對(duì)完美的編碼方式。

比如`https://example.com/?next=abc...`,得到的結(jié)果分別是:

encodeURI(`https://example.com/?next=abc...`):

"https://example.com/?next=abc.com/def&encoding=utf-8"

encodeURIComponent(`https://example.com/?next=abc...`):

"https%3A%2F%2Fexample.com%2F%3Fnext%3Dabc.com%2Fdef%26encoding%3Dutf-8"

encodeURI(https://example.com/?next=${encodeURIComponent('abc.com/def')}&encoding=${encodeURIComponent('utf-8')}):

"https://example.com/?next=abc.com%252Fdef&encoding=utf-8"

懶得改了,最后的 ` 自己腦補(bǔ)吧

2018年7月25日 12:06
編輯回答
生性

“值”,使用 encodeURIComponent

另外,這各問題把“不能解析”的例子給出來。

2018年3月29日 12:40
編輯回答
心沉

你統(tǒng)一用一種方式啊,然后php方面針對(duì)這種方式調(diào)試來能處理好啊。
這類問題你最好有詳細(xì)的例子,包括
編碼前數(shù)據(jù),編碼處理相關(guān)語句,編碼后數(shù)據(jù),php端接收到的數(shù)據(jù),php解碼語句,php解碼結(jié)果。

2017年11月13日 04:53
編輯回答
悶騷型
  • 號(hào)不能正常轉(zhuǎn)義
2017年11月14日 01:39