在 url 中传递从 selectd 选项值返回的 '&'

Pass '&', returned from selecetd option value, in url

<select name="n" onchange="if(this.selectedIndex != 0) window.location = this.options[this.selectedIndex].value">
  <option value="url&amp;param={param}">
     <xsl:if condition>
       <xsl:attribute name="selected">true</xsl:attribute>
     </xsl:if>
  </option>
</select>

上面的代码工作正常,它将选定的选项传递给 url。唯一的问题是当参数之间包含'&'符号时。 如何传递具有 'A & B' 之类的值的参数? url编码似乎没有帮助?感谢您的宝贵时间!

已尝试 urlencode(),但 return 出现双重转义错误。注意这道题不是简单的对整个url进行编码,而是为了转义一些传递参数的特殊字符。我有另一种情况,其中参数值在字符串中有“+”号。我认为显示字符串可能更好,但 return 一个 nameid 作为值,它是 int。我的选项值变成了这样:

  <select onchange="if(this.selectedIndex != 0) window.location = this.options[this.selectedIndex].value">
    <option value="" selected="selected"><xsl:value-of select="/A/D/NAME"/></option>
    <xsl:for-each select="/A/B/C">                  
     <option value="URL&amp;Name={NAME}&amp;ID={ID}"
      <xsl:if test="NAME=/A/D/NAME"><xsl:attribute name="selected">true</xsl:attribute></xsl:if>
      <xsl:value-of select="NAME"/>
     </option>
    </xsl:for-each>
  </select>

url 现在将 ID 作为与参数 1(名称)匹配的参数 2。我可以使用这个 Id 来搜索数据库,然后 return string(Name) 再次显示。这并没有直接回答问题,但确实提供了解决方法。