Javascript decodeURI (Компонент) неправильно сформированное исключение URI - PullRequest
33 голосов
/ 30 января 2012

Я ввел следующее в консоли Chrome:

decodeURIComponent('a%AFc');

Вместо того, чтобы привести к a0xAFc, это вызвало исключение URIError (неправильный формат uri).

Я слышал несколько оправданий, почему это возможно, но я не понимаю, почему , почему ?

В частности, функция decodeURIComponent() должна декодировать данные, а не проверять URI.

Ответы [ 2 ]

40 голосов
/ 30 января 2012

%AF сам по себе не символ, а часть последовательности Unicode (MACRON - %C2%AF).

%AF не был создан encodeURIComponent, но что-то вродеescape, поэтому его можно декодировать как unescape.

Что вам, вероятно, понадобится decodeURIComponent('%C2%AF')

1 голос
/ 29 марта 2019

Это может или не может относиться к чужой ситуации, но это то, что сделал это для меня, поэтому я думал, что поделюсь. Я загружаю и загружаю множество текстовых файлов в пользовательскую 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 '%'
...