Normalement, la fonction correcte encode une chaîne pour une utilisation dans le cadre de une URL est encodeURIComponent
. Ne pas utiliser escape
, qui est un schéma de codage personnalisé non standard obsolète unique à JavaScript. Il ressemble à l'encodage des paramètres d'URL, mais traite différemment les éléments positifs et tous les caractères non ASCII. Mettez-le avec un décodeur d'URL standard et vous obtenez des erreurs.
Cependant, vous ne devez pas appeler encodeURIComponent
sur location.search
si elle te donne des personnages comme mauvais ou <
>
(qui ne devrait pas apparaître dans une URL, mais IE vous permet d'entrer), car elle doublera-encoder les caractères qui sont déjà correctement codés; par exemple un vrai %3C
dans l'adresse (à partir de si l'utilisateur a suivi un correctement -formé lien vers votre site) sera converti en %253C
.
La correction des caractères d'URL 'non sécurisés' tout en laissant les caractères déjà codés est la raison d'être de la fonction encodeURI
; essayez cela (sur tous les navigateurs, pas besoin de renifler). Il est rarement utilisé, mais pourrait être ce dont vous avez besoin. Sinon, vous êtes confronté à un remplacement ennuyeux de la fonction regexp-and-hex-encoding-function.
C'est 'encodeURI' plutôt que' encoderURL'. –
Vous avez raison! Je suis un imbécile aux gros doigts. – bobince