Tijdens het verplaatsen van een website – die ik niet heb gebouwd – ben ik het gebruik van %3F
tegengekomen.
%3F
is de percent-encodedversie van ?
.
Het lijkt zo vaak gebruikt te worden:
<ahref="example%3Flang=1.html">Example</a>
bij het linken naar een bestand met de naam example_lang=1.html
.
Dus ik heb %3F
vervangen door _
en alles werkt weer.
Ik mis hier iets. De oude website werkte. Na verhuizing werkte het niet meer. Na de vervanging van %3F
naar _
werkten de links weer. Waarom?
Antwoord 1, autoriteit 100%
Eerst moet je je vraag verder uitwerken om hem beter te begrijpen. Als ik het goed heb begrepen, is dit misschien het antwoord.
“_” is geen gereserveerd URI-teken.
Zoals je zei dat %3F is gereserveerd voor “?” dan heb je helemaal gelijk, maar als je de documentatie leest die op wiki is geschreven, staat dat “_” (underscore) geen gereserveerd URI-teken is.
Zodat als de URL voor een webpagina bijvoorbeeld “example_test.html” is, de gecodeerde URL “example_test.html” moet zijn als er geen mechanisme toegepast op die URL. Nu zal ik een ander voorbeeld nemen van een op PHP gebaseerde webpagina die uw vraag kan beantwoorden.
In PHP is er een functie “str_replace” die wordt gebruikt om de tekenreeks te vervangen door door de programmeur gedefinieerde tekens of tekenreeks.
Laten we aannemen dat ik een pagina heb met de naam “example_test.html” en om een aantal xyz-redenen wil ik deze wijzigen in “example%3Ftest.html” en dan ga ik kan gebruiken
str_replace("%3F","_","<a href='example%3Ftest.html'>Example Test</a>");
Deze functie zoekt naar alle exemplaren van “%3F” en vervangt deze door “_” in de opgegeven tekenreeks (hier “href=example%3Ftest .html“) en wordt uitgevoerd als “href=’example_test.html“, de daadwerkelijke link voor mijn bestand.