溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP中urlencode和rawurlencode的區(qū)別有哪些

發(fā)布時(shí)間:2020-10-13 17:45:14 來(lái)源:億速云 閱讀:151 作者:小新 欄目:編程語(yǔ)言

PHP中urlencode和rawurlencode的區(qū)別有哪些?這個(gè)問(wèn)題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見(jiàn)到的。希望通過(guò)這個(gè)問(wèn)題能讓你收獲頗深。下面是小編給大家?guī)?lái)的參考內(nèi)容,讓我們一起來(lái)看看吧!

事件背景:

聽(tīng)大牛說(shuō),之前做h6小游戲,需要后端輸出用戶的相關(guān)信息給前端,輸出的內(nèi)容有:用戶id,用戶昵稱等字段,使用get方式傳參。后端使用PHP語(yǔ)言對(duì)中文昵稱進(jìn)行格式化編碼,使用的是常用的urlencode函數(shù)。

出現(xiàn)問(wèn)題:

使用urlencode這個(gè)函數(shù)進(jìn)行格式化,urlencode函數(shù)會(huì)把空格編碼為:+

當(dāng)然,前端在接收時(shí)可以解碼后進(jìn)行替換 + 為空格的方式處理。但是這樣就多做了一步,很麻煩,有的時(shí)候我們的數(shù)據(jù)接口是開(kāi)發(fā)給第三方或者其他使用的,他們?cè)谔幚碇胁灰欢ㄍ耆凑者@樣的思路來(lái)做。

比如前端是用Python接收,直接解碼后顯示,昵稱就會(huì)有 + 號(hào)了。

解決方案:

使用rawurlencode

在PHP中,urlencode把空格編碼為+號(hào),rawurlencode把空格編碼為%20

PHP Manual對(duì)兩個(gè)函數(shù)的說(shuō)明:

urlencode: 返回字符串,返回字符串,此字符串中除了 -_. 之外的所有非字母數(shù)字字符都將被替換成百分號(hào)(%)后跟兩位十六進(jìn)制數(shù),空格則編碼為加號(hào)(+)。此編碼與 WWW 表單 POST 數(shù)據(jù)的編碼方式是一樣的,同時(shí)與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣。由于歷史原因,此編碼在將空格編碼為加號(hào)(+)方面與 RFC1738 編碼(參見(jiàn) rawurlencode())不同。

rawurlencode返回字符串,此字符串中除了 -_. 之外的所有非字母數(shù)字字符都將被替換成百分號(hào)(%)后跟兩位十六進(jìn)制數(shù)。這是在 RFC 1738 中描述的編碼,是為了保護(hù)原義字符以免其被解釋為特殊的 URL 定界符,同時(shí)保護(hù) URL 格式以免其被傳輸媒體(像一些郵件系統(tǒng))使用字符轉(zhuǎn)換時(shí)弄亂。

所以,在使用PHP傳中文編碼時(shí),用rawurlencode

感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)PHP中urlencode和rawurlencode的區(qū)別有哪些大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI