私はURLで(GET経由で)渡される文字列をエンコードしています。しかし、escape
、encodeURI
、encodeURIComponent
のいずれかを使用すると、&
は%26amp%3B
に置き換えられますが、%26
に置き換えます。何がおかしいのですか?
あなたのコードを見ないで、暗闇の中で突き刺す以外に答えるのは難しいです。 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, "&"));
あなたが文字通りこれをしたならば:
encodeURIComponent('&')
結果は%26
です、 ここでテストできます 。エンコードしている文字列が just &
であり、&
ではないことを確認してください。それ以外の場合は正しくエンコードされています。何らかの理由で別の結果が必要な場合は、エンコードの前に.replace(/&/g,'&')
を実行できます。
HTMLとURIのエンコーディングがあります。 &
は&
HTMLでエンコード ですが、%26
は URIエンコード で&
です。
文字列をURIエンコードする前に、HTMLデコードしてからURIエンコードすることをお勧めします。
var div = document.createElement('div');
div.innerHTML = '&AndOtherHTMLEncodedStuff';
var htmlDecoded = div.firstChild.nodeValue;
var urlEncoded = encodeURIComponent(htmlDecoded);
結果%26AndOtherHTMLEncodedStuff
これが時間を節約することを願っています