URL 编码将“&”(与号)视为“&”HTML 实体

2022-08-30 00:03:52

我正在对将在URL中传递的字符串进行编码(通过GET)。但是如果我使用 , 或 ,将被替换为 ,但我希望它被替换为 。我做错了什么?escapeencodeURIencodeURIComponent&%26amp%3B%26


答案 1

如果看不到你的代码,除了在黑暗中刺伤之外,很难回答。我猜你传递给 encodeURIComponent() 的字符串,这是要使用的正确方法,来自访问 innerHTML 属性的结果。解决方案是改为获取 innerText/textContent 属性值:

var str, 
    el = document.getElementById("myUrl");

if ("textContent" in el)
    str = encodeURIComponent(el.textContent);
else
    str = encodeURIComponent(el.innerText);

如果不是这种情况,则可以使用 replace() 方法来替换 HTML 实体:

encodeURIComponent(str.replace(/&/g, "&"));

答案 2

如果你真的这样做了:

encodeURIComponent('&')

然后结果是 ,你可以在这里测试它。确保您编码的字符串只是而不是以...否则,它编码正确,这可能是这种情况。如果由于某种原因需要不同的结果,则可以在编码之前执行。%26&&.replace(/&/g,'&')