2009-11-07 15 views

Odpowiedz

20

Tak, można go używać zwykły w ścieżce URL tak:

http://example.com/Alice&Bob 

Tylko jeśli chcesz go używać w zapytaniu trzeba zakodować go %26:

http://example.com/?arg=Alice%26Bob 

W przeciwnym razie byłby interpretowany jako separator argumentów, interpretowany jako application/x-www-form-urlencoded.

Aby uzyskać więcej informacji, patrz RFC 3986.

+0

Mam nadzieję, że to prawda: różnica między wielką a kiepską odpowiedzią. Cytaty opatrzone datą z * RFC3986 * mogą sprawić, że będzie to wspaniałe – Borodin

2

Dopóki nie dodajesz zmiennych do ciągu zapytania, zakoduj go.

1

zakodować „&” z & (ta odpowiedź jest oparta na wykorzystaniu znaczników)

Jeśli proszą co do użycia „&” lub „i” podczas rejestracji nazwę adresu URL, to użyłby "i".

EDYCJA: Jak wspomniano w komentarzach "& jest jednostką encji HTML, a nie jednostką znaku URI. Poprzez umieszczenie tego w identyfikatorze URI nadal masz znak ampersand i dodatkowe, nieistotne znaki." Zacząłem odpowiadać, zanim w pełni zrozumiem twoje pytanie.

+2

& to jednostka znaku HTML, a nie jednostka postaci URI. Umieszczając to w URI, wciąż masz znak i dodatkowe znaki dodatkowe. –

+0

* Dłoń na twarzy * Dobrze, wysłana przed przemyśleniem. Głębokie głosowanie w razie potrzeby. – MarkPowell

+0

Po prostu usuń swoją odpowiedź, zamiast prosić o głosowanie w dół :) – truppo

6

Adres URL jest na ogół w postaci

scheme://host/some/path/to/file?query1=value&query2=value 

Więc to nie jest wskazane, aby używać go w adresie URL, chyba że chcesz go używać do parametrów. W przeciwnym razie należy% uciec z niego przy użyciu% 26, np.

http://www.example.com/hello%26world 

Powoduje to, że ścieżka jest przesyłana jako hello & świat. Istnieją inne znaki, które muszą zostać usunięte, gdy są używane poza kontekstem w adresie URL. Zobacz listę here.

+0

Nie musisz kodować go, gdy jest używany w ścieżce URL. – Gumbo

+0

Ok, nie wiedziałem tego. Właśnie przeczytałem część o kodowaniu w RFC, które łączyłeś w twojej odpowiedzi. Ale jeśli zrozumiałem to poprawnie, wydaje się, że http://example.com/Alice&Bob i http://example.com/Alice%26Bob nie są uważane za równoważne i mogą być różnie interpretowane przez aplikację (co nie jest prawdą w przypadku HTTP, jak zauważyłeś). – Alfonso

Powiązane problemy