ucieczka()
Nie używaj tego!
escape()
jest zdefiniowany w sekcji B.2.1.2 ucieczka, a tekst wprowadzający do załącznika B mówi:
... Wszystkie funkcje językowe i zachowania określone w tym załączniku mają jedną lub więcej niepożądanych cech, a przy braku starszego użycia zostałyby usunięte z tej specyfikacji. ...
... Programiści nie powinni używać ani zakładać istnienia tych funkcji i zachowań podczas pisania nowego kodu ECMAScript ....
Zachowanie:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape
Znaki specjalne są kodowane z wyjątkiem: @ * _ + -. /
Formularz szesnastkowy dla bohaterów, których kod jest jednostka wartość 0xFF lub mniej, to sekwencja ucieczki dwucyfrowa: %xx
.
W przypadku znaków o większej jednostce kodu stosuje się czterocyfrowy format %uxxxx
. Jest to niedozwolone w ciągu zapytania (zgodnie z definicją w RFC3986 ):
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
Znak procentu jest dozwolony tylko wtedy, gdy bezpośrednio po nim następują dwie cyfry szesnastkowe, a następnie procent u
nie jest dozwolony.
encodeURI ()
Użyj encodeURI, jeśli potrzebujesz działającego adresu URL. Zadzwoń:
encodeURI("http://www.example.org/a file with spaces.html")
uzyskać:
http://www.example.org/a%20file%20with%20spaces.html
Nie wywołuj encodeURIComponent, ponieważ zniszczyłby adres URL i zwrócił
http%3A%2F%2Fwww.example.org%2Fa%20file%20with%20spaces.html
encodeURIComponent ()
Użyj encodeURIComponent, jeśli chcesz zakodować wartość parametru URL.
var p1 = encodeURIComponent("http://example.org/?a=12&b=55")
Następnie możesz utworzyć potrzebny adres URL:
var url = "http://example.net/?param1=" + p1 + "¶m2=99";
Otrzymasz ten pełny adres URL:
http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55¶m2=99
Zauważ, że encodeURIComponent nie zmienia '
znaku. Częstym błędem jest używanie go do tworzenia atrybutów HTML, takich jak href='MyUrl'
, które mogą cierpieć z powodu błędu wstrzykiwania. Jeśli konstruujesz HTML z ciągów znaków, użyj "
zamiast '
cudzysłowów atrybutów lub dodaj dodatkową warstwę kodowania ( '
może być zakodowana jako% 27).
Aby uzyskać więcej informacji na temat tego rodzaju kodowania, możesz sprawdzić: http://en.wikipedia.org/wiki/Percent-encoding
encodeURIComponent("var1=value1&var2=value2")
jest to typowy przypadek użycia. Ten przykład zakoduje i , co prawdopodobnie nie jest zamierzone! jest zwykle stosowany osobno tylko do wartości w każdej parze wartości klucza (część po każdej ).=
&
encodeURIComponent
=