URL enkodeer en dekodeer
Maak teks veilig om in 'n URL te plaas, of verander reekse soos %20 terug na leesbare karakters. Die hulpmiddel gebruik u blaaier se eie encodeURIComponent, encodeURI en decodeURIComponent, lys navraagparameters in 'n tabel en stuur niks na 'n bediener nie.
0 karakters · 0 woorde · 0 reëls
0 karakters · 0 woorde · 0 reëls
Werk heeltemal in hierdie blaaieroortjie. Jou teks word nooit opgelaai of gestoor nie.
Wat elke funksie ontsnap
Bereken met die blaaier se eie funksies. encodeURIComponent laat letters, syfers en hierdie tekens ongemoeid: ! ' ( ) * - . _ ~
| Karakter | encodeURIComponent | encodeURI |
|---|---|---|
(spasie) | %20 | %20 |
! | ! | ! |
" | %22 | %22 |
# | %23 | # |
$ | %24 | $ |
% | %25 | %25 |
& | %26 | & |
' | ' | ' |
( | ( | ( |
) | ) | ) |
* | * | * |
+ | %2B | + |
, | %2C | , |
/ | %2F | / |
: | %3A | : |
; | %3B | ; |
= | %3D | = |
? | %3F | ? |
@ | %40 | @ |
[ | %5B | %5B |
] | %5D | %5D |
{ | %7B | %7B |
} | %7D | %7D |
| | %7C | %7C |
\ | %5C | %5C |
^ | %5E | %5E |
` | %60 | %60 |
< | %3C | %3C |
> | %3E | %3E |
~ | ~ | ~ |
- | - | - |
_ | _ | _ |
. | . | . |
é | %C3%A9 | %C3%A9 |
€ | %E2%82%AC | %E2%82%AC |
😀 | %F0%9F%98%80 | %F0%9F%98%80 |
Persentasie-kodering en die gereserveerde karakters van RFC 3986
'n URL mag net 'n beperkte stel ASCII-karakters bevat. RFC 3986, die spesifikasie uit 2005 vir URI-sintaksis, verdeel hulle in twee groepe. Die onbeperkte (unreserved) karakters, A–Z, a–z, 0–9 en die vier tekens - . _ ~, hoef nooit geënkodeer te word nie. Die gereserveerde karakters het take: die algemene skeitekens : / ? # [ ] @ skei skema, gasheer, pad, navraag en fragment, en die subskeitekens ! $ & ' ( ) * + , ; = skei items daarbinne, soos & en = in 'n navraagstring doen. Alles anders, en enige gereserveerde karakter wat as gewone data gebruik word, moet persent-geënkodeer word.
Persent-enkodering skryf 'n greep as % gevolg deur twee heksadesimale syfers. Teks word eers na UTF-8 omgeskakel, so 'n spasie word %20, 'n é (twee grepe) word %C3%A9 en 'n emoji word vier %XX-groepe. Daarom beland 'n soektog na "café & bar" as caf%C3%A9%20%26%20bar in 'n skakel: die & word geënkodeer sodat die bediener dit nie as die begin van 'n nuwe parameter lees nie.
encodeURIComponent, encodeURI en dekodering
encodeURIComponent is die regte keuse vir 'n enkele deel, soos 'n navraagwaarde, 'n padsegment of 'n aanstuur-URL wat as parameter deurgegee word. Dit enkodeer alles behalwe die onbeperkte karakters en ! ' ( ) *, wat JavaScript om historiese redes ongemoeid laat. encodeURI (hele URL) neem aan sy invoer is reeds 'n volledige adres en laat die gereserveerde karakters ongeskonde, so by https://example.com/a b?q=1 word net die spasie geënkodeer. Om encodeURI op 'n parameterwaarde te gebruik is 'n klassieke fout: 'n & of # in die waarde bly behoue en breek die URL.
Dekodeer keer albei funksies om. HTML-vorms wat met GET ingedien word, gebruik die ouer application/x-www-form-urlencoded-formaat, waarin 'n spasie as + eerder as %20 geskryf word; los Hanteer + as 'n spasie aangevink vir sulke gevalle, en verwyder die regmerkie wanneer 'n letterlike plusteken saak maak, soos in 'n telefoonnommer. As die invoer 'n % bevat wat nie deur twee heks-syfers gevolg word nie, of grepe wat nie geldige UTF-8 is nie, misluk dekodering met 'n duidelike boodskap in plaas daarvan om te raai. Wanneer die teks 'n navraagstring bevat, verskyn die parameters gedekodeer in 'n tabel onder die hulpmiddel. Vir binêre data in URL's is Base64url die gewone alternatief.
Gereelde vrae
- Moet 'n spasie in 'n URL %20 of 'n plusteken wees?
- In paaie en volgens RFC 3986 is 'n spasie %20. Die +-vorm beteken net 'n spasie binne navraagstringe wat soos HTML-vorms geënkodeer is, so %20 is oral die veilige keuse.
- Hoekom het my URL %2520 daarin gekry?
- Dit is twee keer geënkodeer. Die eerste ronde het 'n spasie in %20 verander, en die tweede het die % self as %25 geënkodeer. Dekodeer een keer om die ekstra laag ongedaan te maak, en enkodeer waardes net op een plek in jou kode.
- Watter karakters hoef nooit persentasie-gekodeer te word nie?
- Die onbeperkte stel van RFC 3986: die letters A tot Z in albei kassies, die syfers 0 tot 9, en die koppelteken, punt, onderstreep en tilde.
- Kan 'n URL nie-Engelse letters sonder kodering bevat?
- Blaaiers wys hulle, maar oor die draad word elke nie-ASCII-karakter in 'n pad of navraag as persent-geënkodeerde UTF-8 gestuur. Domeinname gebruik 'n aparte stelsel, Punycode, wat hulle in xn--etikette omskakel.
- Hoekom meld die dekodering 'n wanvormde reeks?
- Die teks het 'n % wat nie deur twee heksadesimale syfers gevolg word nie, soos 'n letterlike "100%", of die grepe dekodeer na ongeldige UTF-8. Enkodeer los %-tekens as %25 voor jy dekodeer.