J'ai entré ce qui suit dans la console de Chrome:
decodeURIComponent('a%AFc');
Au lieu de résulter en a0xAFc
, Il a provoqué une exception URIError (uri malformé).
J'ai entendu plusieurs excuses pour expliquer pourquoi cela est possible, mais ce que je ne comprends pas, c'est pourquoi ?
La fonction decodeURIComponent()
en particulier est censée décoder les données, pas vérifier l'URI.
%AF
N'est pas un personnage à part entière mais fait partie de la séquence Unicode ( MACRON - %C2%AF
).
%AF
N'a pas été produit par encodeURIComponent
mais quelque chose comme escape
, il peut donc être décodé par unescape
.
Ce dont vous avez probablement besoin est decodeURIComponent('%C2%AF')
Cela peut ou non s'appliquer à la situation de quelqu'un d'autre, mais c'est ce qui m'a fait, alors j'ai pensé que je partagerais. Je télécharge et télécharge de nombreux fichiers texte sur un CMS personnalisé.
le signe '%' dans le code source faisait des ravages pour moi.
// 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 '%'