【问题标题】:How can I include special characters in query strings?如何在查询字符串中包含特殊字符?
【发布时间】:2011-02-19 04:04:44
【问题描述】:

URL http://localhost/mysite/mypage?param=123 工作正常。但是,如果我想在param 中添加一些特殊字符,例如?/\,那么 URL 将变为http://localhost/mysite/mypage?param=a=?&b=/http://localhost/mysite/mypage?param=http://www.example.com/page2?a=\&b=...,这将不起作用。我该如何解决这个问题?

【问题讨论】:

    标签: html url-rewriting


    【解决方案1】:

    您需要使用编码特殊字符,参考this页面。

    如果您使用的是 PHP,有一个函数可以执行此操作,称为 urlencode()

    【讨论】:

      【解决方案2】:

      您必须对 URL 中的特殊字符进行编码。见:http://www.w3schools.com/tags/ref_urlencode.asp

      【讨论】:

      【解决方案3】:

      您需要将字符替换为 URL 实体。 Some information here.

      【讨论】:

        【解决方案4】:

        在 JavaScript 中,您可以使用 encodeURI() 函数。

        ASP 有Server.URLEncode() 函数。

        您可以在 .NET 中使用 HttpServerUtility.UrlEncode

        【讨论】:

        【解决方案5】:

        使用 javascript 传递带有特殊字符的 QueryString 值的简单方法:

        var newURL=encodeURIComponent(uri);
        window.location="/abc/abc?q="+newURL;
        

        【讨论】:

          【解决方案6】:

          您需要对查询参数进行编码,然后再将它们组合成一个 url。这里需要的函数是encodeURIComponent。例如,

          您需要创建的网址是:

          http://localhost/mysite/mypage?param=a=?&b=/
          

          现在,假设 ?和 / 是变量,你需要在输入 url 之前对它们进行编码。 所以让我们使用这个函数创建你的 url(我期待两个查询参数):

           var q1 = "a=?"; //came from some input or something
              var q2 = "/"; //came from somewhere else
          
              var faultyUrl =  "http://localhost/mysite/mypage?param="+ q1 +"&b=" + q2; 
          // "http://localhost/mysite/mypage?param=a=?&b=/"
          
          
              var properUrl =  "http://localhost/mysite/mypage?param="+ encodeURIComponent(q1) +"&b=" + encodeURIComponent(q2); 
          //"http://localhost/mysite/mypage?param=a%3D%3F&b=%2F"
          

          这个功能在基础JS中,所有浏览器都支持。

          【讨论】:

            【解决方案7】:

            我在下面做了,效果很好。

            const myQueryParamValue = "You&Me";
            const ajaxUrl = "www.example.com/api?searchText="+encodeURIComponent(myQueryParamValue)
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-08-15
              • 2010-12-20
              • 2020-12-25
              • 1970-01-01
              • 1970-01-01
              • 2016-08-24
              • 2016-04-22
              • 2013-06-05
              相关资源
              最近更新 更多