J'encode la chaîne suivante en javascript
qry=m%20&%20l
Cela me donne une sortie
encodeURI = "?qry=M & L";
Donc, le "&" de M & L
n'est pas encodé. Que dois-je faire?
6 Réponses :
N'encode pas les caractères qui ont une signification spéciale (réservé caractères) pour un URI. L'exemple suivant montre toutes les pièces qui un "schéma" d'URI peut éventuellement contenir.
Référence p>
encodeURI code >
n'encodera pas les caractères spéciaux suivantslet uri = "?qry=M & L" console.log(encodeURIComponent(uri))
A-Z a-z 0-9 - _ . ! ~ * ' ( )Vous pouvez donc utiliser encodeURIComponent , cela encodera tous les caractères sauf ceux-ci
let uri = "?qry=M & L" console.log(encodeURI(uri))
A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
Le encodeURI () code>
ne va pas encoder &
car il encodera uniquement certains jeux de caractères spéciaux. pour coder &
vous devez utiliser encodeURIComponent
.
encodeURI
encode tout sauf:
const URL = "https://www.example.com/resource?query=10&id=20&name=hello%" console.log(encodeURI(URL)); console.log(encodeURIComponent(URL));
encodeURIComponent encode tout sauf:
console.log(encodeURIComponent("?qry=M & L"));
A-Z a-z 0-9 - _ . ! ~ * ' ( )
Notez la différence entre les deux méthodes utilisées pour encoder des URL.
A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #
Depuis MDN :
Notez qu'encodeURI ne peut pas à lui seul former HTTP GET et POST corrects requêtes, comme pour XMLHTTPRequests, car "&", "+" et "=" sont non encodé, qui sont traités comme des caractères spéciaux dans GET et POST demandes. encodeURIComponent, cependant, encode ces caractères
utilisez plutôt encoreURIComponent pour encoder &
comme % 26
comme indiqué ci-dessous.
Mais il encode également d'autres caractères spéciaux comme ?
et =
let uri = "?qry=M & L" console.log(encodeURIComponent(uri))
De ici
La fonction encodeURI () est utilisée pour encoder un URI.
Cette fonction encode les caractères spéciaux, sauf:, /? : @ & = + $ # (Utilisez encodeURIComponent ()
pour encoder ces caractères).
Et, voir aussi cette réponse
Donc, vous devrez probablement faire quelque chose comme
var inputWithSplChars = "M & L"; encodeURI = "?qry=" + encodeURIComponent(inputWithSplChars);
J'espère que cela vous aidera! Bravo!
Vous devriez utiliser encodeURIComponent () au lieu de encodeURI ()
Remarque : En général, encodeURIComponent () est utilisé pour encoder une chaîne (chaîne de requête), qui serait placée dans l'URL. Si vous utilisez une URL existante à encoder, vous pouvez utiliser encodeURI ()
const uri = "?qry=M & L"; console.log(encodeURIComponent(uri));
Référence : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
Référence ici: encodage d'url Vous avez trois options:
escape(str) will not encode: * @ - _ + . / encodeURI(uri) will not encode: ~!@#$&*()=:/,;?+' encodeURIComponent(uri) will not encode: ~!*()'