Javascript 如何强制浏览器不转换';逗号';使用JS创建2C符号?

Javascript 如何强制浏览器不转换';逗号';使用JS创建2C符号?,javascript,Javascript,我正在通过函数更改当前用户的路径: function setSomeValue(someValues) { var query = ''; for (var i = 0; i < someValues.length; i++) { query += someValues[i] + ','; } if ('URLSearchParams' in window) { var searchParams = new U

我正在通过函数更改当前用户的路径:

function setSomeValue(someValues) {
      var query = '';
      for (var i = 0; i < someValues.length; i++) {
        query += someValues[i] + ',';
      }
      if ('URLSearchParams' in window) {
        var searchParams = new URLSearchParams(window.location.search);
        searchParams.set("paramName", query);

        var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString();
        history.pushState(null, '', newRelativePathQuery);
      }
    }
但浏览器会将我的逗号转换为
%2C
,因此我得到以下结果:

www.site.com?paramName=value1%2Cvalue2%2C
应该怎么做才能将逗号推送到URL


(复制并粘贴多条注释)

这可能是由于
URLSearchParams
及其
toString
方法实现造成的,但我们不知道,因为您还没有向我们展示实际情况。如果这不是故意对逗号进行编码,而浏览器只是自动进行编码,那么您对此无能为力

如果
newRelativePathQuery
已经包含编码版本,可能它们可以被替换回正常的逗号。但是如果
history.pushState
做到了这一点,那么创建URL本身的“其他方法”将不会对您有多大帮助

由于调试输出显示
newRelativePathQuery
已经包含编码的逗号,您可以尝试将它们替换回逗号,然后查看是否“幸存”被推送到历史记录中。

(从多个注释复制并粘贴)

这可能是由于
URLSearchParams
及其
toString
方法实现造成的,但我们不知道,因为您还没有向我们展示实际情况。如果这不是故意对逗号进行编码,而浏览器只是自动进行编码,那么您对此无能为力

如果
newRelativePathQuery
已经包含编码版本,可能它们可以被替换回正常的逗号。但是如果
history.pushState
做到了这一点,那么创建URL本身的“其他方法”将不会对您有多大帮助


由于调试输出显示
newRelativePathQuery
已经包含编码的逗号,您可以尝试将它们替换回逗号,然后查看是否“幸存”到历史记录中。

@IgnacioVazquez Abrams,如果您不知道该如何做-不要回答me@LabLab冷静点,伙计。不要把每件事都看得那么严肃。称url编码为“如此恶心的事情”听起来很奇怪。也许改变你问题的那一部分会阻止每个人对伊格纳西奥的评论投赞成票@标签编码的版本是正确的。它必须被编码。想象一下,不编码
&
,因此意外地添加了一个新参数。@CBroe这里的机械讨论有点旁注:我认为规范不需要逗号进行百分比编码<代码>查询代币由
pcahr
代币组成,包括选项
无保留/pct编码/子代币
。根据RFC 3986,逗号看起来像一个标记,这意味着它不需要使用pct编码的标记。@IgnacioVazquez Abrams仅供参考,根据RFC 3986,逗号在URL中是有效的。这种转换是WHATWG比URL规范允许的保守得多。@IgnacioVazquez Abrams,如果你不知道该怎么做,不要回答me@LabLab冷静点,伙计。不要把每件事都看得那么严肃。称url编码为“如此恶心的事情”听起来很奇怪。也许改变你问题的那一部分会阻止每个人对伊格纳西奥的评论投赞成票@标签编码的版本是正确的。它必须被编码。想象一下,不编码
&
,因此意外地添加了一个新参数。@CBroe这里的机械讨论有点旁注:我认为规范不需要逗号进行百分比编码<代码>查询代币由
pcahr
代币组成,包括选项
无保留/pct编码/子代币
。根据RFC 3986,逗号看起来像一个标记,这意味着它不需要使用pct编码的标记。@IgnacioVazquez Abrams仅供参考,根据RFC 3986,逗号在URL中是有效的。这种转换是WHATWG比URL规范所允许的保守得多。
www.site.com?paramName=value1%2Cvalue2%2C