Encoder les caractères spéciaux lors de la définition des paramètres d'URL
P粉348915572
2023-08-17 11:25:49
<p>Je dois définir certains paramètres d'URL, qui doivent également contenir un caractère spécial <code>$</code></p>
<p>Actuellement, j'utilise <code>.set()</code> pour créer et définir les valeurs de ces paramètres : </p>
<pre class="brush:php;toolbar:false;">const myUrl = new URL("http://www.example.com/??");
let params = new URLSearchParams();
params.set('$param1', '60');
params.set('$param2', '100');</pre>
<p>Je sais que je dois utiliser <code>encodeURI()</code> pour m'assurer d'obtenir <code>$</code> dans l'URL et non <code>%24</ code> - Mais à quel stade dois-je faire cela ? </p>
<p>Si je fais quelque chose comme ceci lors de la conversion des paramètres en chaînes et de leur ajout à l'URL, ils sont déjà convertis. </p>
<pre class="brush:php;toolbar:false;">myUrl.search = encodeURI(params.toString());
// Sortie : http://www.example.com/?%24param1=60&%24param2=100
// Attente : http://www.example.com/?$param1=60&$param2=100</pre>
<p><br /></p>
Puisque vous en avez besoin et que votre serveur le prend en charge, corrigez-le simplement à la fin
Dans votre cas, la méthode
$
字符被编码为%24
,因为它是URL中的保留字符。URLSearchParams
对象的set
encode automatiquement ces caractères pour garantir que la chaîne résultante est une URL valide.Cependant, si vous souhaitez inclure les caractères
$
tels quels, vous pouvez contourner l'encodage automatique en construisant manuellement la chaîne de requête :Cela vous donnera le résultat souhaité, mais veuillez noter qu'il ne s'agit peut-être pas d'une URL valide selon les spécifications de l'URL, car
$
est un caractère réservé. Cela peut entraîner des problèmes avec certains serveurs ou API.Si vous contrôlez le serveur ou l'API avec lequel vous interagissez et que vous êtes sûr qu'il peut gérer les URL avec
$
字符的URL,则此方法应该有效。否则,通常最安全的做法是使用URLSearchParams
caractères dans la chaîne de requête, cette méthode devrait fonctionner. Sinon, il est généralement plus sûr d'utiliser l'encodage automatique fourni parURLSearchParams
.Veuillez confirmer si cette solution fonctionne pour vous ou si vous avez besoin d'aide supplémentaire.