1. ホーム
  2. ジャバスクリプト

[解決済み】URLエンコードで"&"(アンパサンド)が"& "HTMLエンティティとして認識される件

2022-04-17 22:12:23

質問

URLに渡される文字列をエンコードしています(GET経由)。しかし、もし私が escape , encodeURI または encodeURIComponent , & は次のように置き換えられます。 %26amp%3B に置き換えてほしいのですが。 %26 . 私は何を間違えているのでしょうか?

どうすればいいですか?

あなたのコードを見ないと、闇雲に回答する以外には難しいです。 推測するに、あなたが渡している文字列は encodeURIComponent() にアクセスした結果であり、これは正しいメソッドです。 インナーHTML プロパティを使用します。 解決策としては インナーテキスト / テキストコンテンツ プロパティの値で代用できます。

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, "&"));