url傳遞中文字元,特殊危險字元的解決方案

2021-07-22 01:59:12 字數 796 閱讀 6491

很多時候,我們需要在url中傳遞中文字元或是其它的html等特殊字元,似乎總會有各種亂,不同的瀏覽器對他們的編碼又不一樣,

對於中文,一般的做法是:

把這些文字字串傳給url之前,先進行 urlencode($text) 一下;

但是對於一些很「危險」的字元,比如說html字元,甚至是sql注入相關的字元,如果很明顯的傳給系統,出於安全考慮,系統一般都會把它們過濾掉的。

現在,我們需要這些危險字元,該這麼辦?

我想到的辦法是 先給它們 base64_encode($text) 編碼,到服務端時,又給它們 base64_decode($text) 解碼,

貌似很完美,但是在使用的過程中又遇到乙個問題, base64_encode 編碼後的字串中含有 " / ", " + ", " = " 等字元,

這些字元在url編碼中又是特殊字元,比如 "+" ,它就表示 「空格」,但是不同的瀏覽器對「空格」的編碼又不一樣,有的是用「+」表示,有的是用「20%」表示,也就是說,讓這些 base64_encode 編碼後的字串在url中傳遞,用不同的瀏覽器去瀏覽時,服務端得到值不一樣。

於是乎,想到了乙個折中辦法,先將這些base64編碼後的特殊字元替換掉,到服務端後,又替換回來:

function base_encode($str) 

function base_decode($str)

下面是在瀏覽器中得到的效果

xoo6w6osuf65_aiy_atl_b00ke5_b8jnus6ho6gjoam_c

你好,哈哈,看看效果如何。。。

url中有空格等特殊字元及中文字元處理

在做爬蟲時,爬下來的書籍的url位址各式各樣,什麼情況都有。有的url位址既有中文,又有 20 空格等特殊字元。如 不成問題的問題 20 20老舍.mobi 如果是在url中有中文需要轉碼,但轉碼後會將 號替換成 25,導致url不能訪問了。解決的辦法,先判斷url中是否有中文,如果有中文,則替換特...

包含中文字元的URL編碼問題

在xml應用中,經常將一些 url資訊作為xml資料儲存,其中 url引數有可能包含有中文字元。當使用dom對xml資料進行解析時,可以對中文字元進行編碼。但如果只使用xslt來顯示xml資料時 data.xml data.xsl 發現此時的 url會出現編碼錯誤.即使指定編碼型別 encoding...

URL 中文 特殊字元 亂碼處理

前提先了解瀏覽器解析url 關於不同瀏覽器對url編碼的分析 1.encodeuricomponent 與 encodeurl區別 encodeuri 該函式對傳入字串中的所有非 基本字元 mark字元和保留字元 進行轉義編碼 escaping 這些 用於分隔 uri 元件的標點符號 進行編碼 2....