Chromeのコンソールに次のように入力しました。
_decodeURIComponent('a%AFc');
_
_a0xAFc
_になる代わりに、URIError例外(不正な形式のuri)が発生しました。
なぜこれが可能になるのか、いくつかの言い訳を聞いたことがありますが、理解できないのはwhy?
特にdecodeURIComponent()
関数は、URIを検証するのではなく、データをデコードすることになっています。
_%AF
_は彼自身の文字ではなく、Unicodeシーケンスの一部です( _MACRON - %C2%AF
_ )。
_%AF
_はencodeURIComponent
ではなく、escape
のようなものであるため、unescape
でデコードできます。
おそらく必要なのはdecodeURIComponent('%C2%AF')
です
これは他の人の状況に当てはまるかもしれないし当てはまらないかもしれませんが、これは私のためにそれをしたので、私は共有すると思いました。大量のテキストファイルをカスタムCMSにアップロードおよびダウンロードします。
ソースコード内の '%'記号は、私に大混乱をもたらしました。
// send to server
content = content.toString().replace(/%/g,'~~pct~~') // ~~pct~~ <-made up replacement
content = encodeURI(content)
// get back from server / database
content = decodeURI(content)
content = content.toString().replace(/~~pct~~/g,'%') // globally restore '%'