2010-01-28 22 views
28

Perché hai bisogno di codificare gli URL? C'è una buona ragione per cui devi modificare ogni spazio nei dati GET a %20?Perché è necessario codificare gli URL?

+4

Una buona ragione è che in materiale stampato è meglio usare '% 20' in modo che alcuni CdA possibile digitare in senza cercare di indovinare il numero di spazi! –

risposta

27

Da RFC 2936, sezione 2.4.3:

Il carattere di spazio è esclusa perché gli spazi significativi possono scomparire struttura insignificanti possono essere introdotto quando URI sono trascritti o typeset o sottoposto al trattamento di programmi di elaborazione testi . Lo spazio bianco viene anche utilizzato per definire l'URI del in molti contesti.

+3

non è più preciso di RFC – Perpetualcoder

+1

In altre parole, "No, non c'è un motivo tecnico intrinseco, ma sappiamo che gli implementatori e gli utenti sono entrambi sciatti." Probabilmente è stata la decisione giusta, soprattutto perché gli utenti avrebbero difficoltà a mantenere la giusta quantità di spazio. –

+0

@Matthew - Esiste un motivo tecnico intrinseco, vedere la mia risposta – Rippo

-2

Bene, lo fai perché tutti i diversi browser sanno come viene codificata la stringa che compone l'URL. la conversione dello spazio in% 20, ecc. rende quell'URL/URI portatile. Potrebbe essere latino-1 potrebbe essere unicode. Ha bisogno di essere normalizzato per qualcosa che è compreso universalmente. Date un'occhiata a rfc3986 http://tools.ietf.org/html/rfc3986#section-2.1

+1

La modifica della rappresentazione dei byte non specifica una codifica. Almeno non letteralmente. –

24

Perché alcuni personaggi hanno significati speciali.

Ad esempio, in una stringa di query, la e commerciale (&) viene utilizzata come separatore tra coppie chiave-valore. Se si inserisse una e commerciale in uno di questi valori, sembrerebbe il separatore tra la fine di un valore e l'inizio della chiave successiva. Quindi, per caratteri speciali come questo, usiamo la codifica in percentuale in modo che possiamo essere sicuri che i dati siano codificati in modo non ambiguo.

+0

Ma supponiamo che tu possa codificare '&' come '% 26'. Ancora potreste avere un valore contenente la stringa come '100% 26 = 22'. Sembrerebbe ancora il separatore tra le coppie chiave-val, vero ?? –

+2

No, perché '%' è uno dei caratteri con significati speciali, quindi anche questo deve essere codificato (come '% 25'). Se avessi il valore di stringa '% 26', questo apparirebbe in un URL come'% 2526' perché il '%' sarebbe codificato. Per ottenere il valore di stringa, decodificare il '% 25' come'% ', lasciandoti con la stringa'% 26'. – Jim

6
  • originariamente i browser più vecchi potevano essere confusi dagli spazi (non è più un problema).
  • ora, se qualcuno copia l'URL per inviare come un link - lo spazio può rompere il collegamento ipertestuale - vale a dire

Hey! Dai un'occhiata a questo gatto derping che suona il piano!

http://www.mysite.com/?video=funny cat plays piano. 

Vedere come si interrompe il collegamento?

Ora un'occhiata a questo:

http://www.mysite.com/?video=funny%20cat%20plays%20piano. 
Problemi correlati