Maison  >  Questions et réponses  >  le corps du texte

Encoder les caractères spéciaux lors de la définition des paramètres d'URL

<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>
P粉348915572P粉348915572430 Il y a quelques jours416

répondre à tous(2)je répondrai

  • P粉147747637

    P粉1477476372023-08-18 09:43:27

    Puisque vous en avez besoin et que votre serveur le prend en charge, corrigez-le simplement à la fin

    const myUrl = new URL("http://www.example.com/?");
    
    let params = myUrl.searchParams;
    params.set('$param1', '60');
    params.set('$param2', '100');
    
    console.log(myUrl.toString().replace(/%24/g,"$"))

    répondre
    0
  • P粉986028039

    P粉9860280392023-08-18 09:07:27

    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 :

    const myUrl = new URL("http://www.example.com/?");
    
    let params = ['$param1=60', '$param2=100'].join('&');
    
    myUrl.search = params;
    
    console.log(myUrl.toString());
    // 输出:http://www.example.com/?$param1=60&$param2=100
    

    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 par URLSearchParams.

    Veuillez confirmer si cette solution fonctionne pour vous ou si vous avez besoin d'aide supplémentaire.

    répondre
    0
  • Annulerrépondre