33

やってみよう:

encodeURIComponent("'@#$%^&");

これを試してみると、一重引用符を除いてすべての特殊文字がエンコードされていることがわかります。すべての文字をエンコードし、PHPを使用してそれらをデコードするために使用できる関数は何ですか?

ありがとう。

4

7 に答える 7

55

なぜそれらをエンコードしたいのかわかりません。一重引用符のみをエスケープする場合は、を使用できます.replace(/'/g, "%27")。ただし、適切なリファレンスは次のとおりです。

于 2012-06-05T12:07:53.527 に答える
9

次を使用できます。

function fixedEncodeURIComponent (str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, escape);
}

fixedEncodeURIComponent("'@#$%^&");

参照を確認してください:http://mdn.beonex.com/en/JavaScript/Reference/Global_Objects/encodeURIComponent.html

于 2015-09-11T13:58:59.670 に答える
2

btoa()とを使用できますatob()。これは、一重引用符を含む指定された文字列をエンコードおよびデコードします。

于 2020-03-03T07:06:33.320 に答える
2

試してみencodeURI()encodeURIComponent()ください...

console.log(encodeURIComponent('@#$%^&*'));

入力:@#$%^&*。出力:%40%23%24%25%5E%26*。それで、待って、何が起こったの*ですか?なぜこれが変換されなかったのですか?TLDR:あなたは実際に欲しいfixedEncodeURIComponent()fixedEncodeURI()。長い話...

encodeURIComponent()使用しないでください。MDNドキュメントfixedEncodeURIComponent()で定義および説明されているように、を使用してください。encodeURIComponent()

RFC 3986(!、'、(、)、および*を予約)をより厳密に順守するために、これらの文字には形式化されたURI区切りの使用法がありませんが、以下を安全に使用できます。

function fixedEncodeURIComponent(str) { return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { return '%' + c.charCodeAt(0).toString(16); }); }

このトピックについて話している間は、も使用しないでくださいencodeURI()MDNencodeURI()ドキュメントで定義されているように、MDNにも独自の書き直しがあります。彼らの説明を引用するには...

URLの最新のRFC3986に従いたい場合は、角かっこを予約して(IPv6の場合)、URLの一部となる可能性のあるもの(ホストなど)を形成するときにエンコードされないようにする場合は、次のコードスニペットが役立ちます。

function fixedEncodeURI(str) { return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']'); }

于 2020-06-17T19:01:19.863 に答える
1

キャラクターを見逃すことのない巧妙なトリックを見つけました。私はそれを何も除いてすべてを置き換えるように言います。私はこのようにします(URLエンコード):

function encode(w){return w.replace(/[^]/g,function(w){return '%'+w.charCodeAt(0).toString(16)})}

function encode(w){return w.replace(/[^]/g,function(w){return '%'+w.charCodeAt(0).toString(16)})}

loader.value = encode(document.body.innerHTML);
<textarea id=loader rows=11 cols=55>www.WHAK.com</textarea>

于 2015-07-26T12:44:44.857 に答える
1

@Bergiが書いたように、すべての文字を置き換えることができます。

function encoePicture(pictureUrl)
{
 var map=
 {
          '&': '%26',
          '<': '%3c',
          '>': '%3e',
          '"': '%22',
          "'": '%27'
 };

 var encodedPic = encodeURI(pictureUrl);
 var result = encodedPic.replace(/[&<>"']/g, function(m) { return map[m];});
 return result;
}
于 2017-08-29T10:11:59.160 に答える
0

最近の回答(2021)

JavaScriptの使用URLSearchParams

console.log(new URLSearchParams({ encoded: "'@#$%^&" }).toString())

于 2021-12-10T17:54:18.740 に答える