suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Kodierung von Sonderzeichen beim Festlegen von URL-Parametern

<p>Ich muss einige URL-Parameter festlegen, die auch ein Sonderzeichen enthalten müssen. <code>$</code></p> <p>Derzeit verwende ich <code>.set()</code> um die Werte dieser Parameter zu erstellen und festzulegen: </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>Ich weiß, dass ich <code>encodeURI()</code> verwenden muss, um sicherzustellen, dass ich <code>$</code> in der URL erhalte. code> - Aber in welchem ​​Stadium sollte ich das tun? </p> <p>Wenn ich beim Konvertieren der Parameter in Strings und beim Hinzufügen zur URL so etwas mache, sind sie bereits konvertiert. </p> <pre class="brush:php;toolbar:false;">myUrl.search = encodeURI(params.toString()); // Ausgabe: http://www.example.com/?%24param1=60&%24param2=100 // Erwartung: http://www.example.com/?$param1=60&$param2=100</pre> <p><br /></p>
P粉348915572P粉348915572499 Tage vor478

Antworte allen(2)Ich werde antworten

  • P粉147747637

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

    由于您需要它且您的服务器支持它,只需在最后修复它

    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,"$"))

    Antwort
    0
  • P粉986028039

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

    在您的情况下,$字符被编码为%24,因为它是URL中的保留字符。 URLSearchParams对象的set方法会自动对这些字符进行编码,以确保生成的字符串是一个有效的URL。

    然而,如果您想按原样包含$字符,您可以通过手动构建查询字符串来绕过自动编码:

    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
    

    这将给您所需的输出,但请注意,根据URL规范,这可能不是一个有效的URL,因为$是一个保留字符。这可能会导致某些服务器或API出现问题。

    如果您控制您正在与之交互的服务器或API,并且您确信它可以处理查询字符串中带有$字符的URL,则此方法应该有效。否则,通常最安全的做法是使用URLSearchParams提供的自动编码。

    请确认此解决方案是否对您有效,或者是否需要进一步协助。

    Antwort
    0
  • StornierenAntwort