2016-06-09 90 views
0

對於URL編碼,我的意思是這個(http://www.w3schools.com/tags/ref_urlencode.asp),我的問題是URL編碼,我應該編碼param1=<xxx>&param2=<yyy>作爲一個整體,或編碼只是xxxyyy部分?或者我應該分別編碼param1=<xxx>param2=<yyy>?謝謝。URL編碼細節

http://hostname/func?param1=<xxx>&param2=<yyy> 

在此先感謝, 林

回答

0

如果編碼後的一切嗎?

  • ,你將不得不做1個解碼,以獲得完整的字符串
  • 完成後,您將能夠訪問你的parameteres如果沒有混亂caracters(你可以有問題,如果您有=在值會有=沒有區別用於PARM值定界符或內部的值)

如果編碼PARAMS只

  • 你將不得不每值解碼
  • ,你將能夠訪問您的PARAM值straigh遠沒有問題,一旦解碼(無probleme如果值包含=)

這就是爲什麼我會建議只編碼值,以確保不會有任何與=作爲參數值分隔符和編碼值的混淆:

=在一個值將被編碼,所以=你會發現後?將僅用於分隔符

讓我們說你編碼後的一切? :

沒有問題:P1 = 「ABC」 P2 = 「123」

P1 = ABC & P2 = 123 =>編碼=> P1 = ABC & P2 = 123 =>解碼=> P1 = ABC & P2 = 123

問題:P1 = 「一個& b = C」 P2 = 「12」(不可能的,但假設它發生)

P1 =一個& b = C & P2 = 12 =>編碼= > P1 = a & b = c & P2b = 12b = 3a =>解碼=> P1 = a & b = c & P2 = 12(如果您嘗試訪問GET參數,服務器將看到3個參數:P1 = a,b = c,P2 ,= 12)

+0

謝謝Julien,爲您的答覆投票。我不開發服務器端代碼,我只負責發送Http請求到現有的http服務器(例如谷歌,雅虎等),實際上我的問題是什麼是編碼的標準方式(以便標準服務器像谷歌和雅虎可以接受),你回答我的問題,似乎無論哪種方式將工作?另一個問題是,當你提到「1解碼獲得完整的字符串」,對於完整的字符串,你的意思是哪一部分? :) –

+1

完整的字符串=以後的所有內容,包括參數名稱和值 –

+1

我想說這兩種方式都應該工作,但它取決於服務器的行爲。 通常params shoudl格式化以便直接訪問它們:在PHP中獲取Get ['Name']將返回名稱參數的值 如果在?之後編碼所有內容,那麼它可能會破壞本機GET ['ParamName' ]或POST ['ParamName']功能 –