Мне не хватает репутации, чтобы поместить это в комментарии к существующим ответам:
unescape
устаревает только для работы с URI (или любым кодированным utf-8), который, вероятно, имеет место для большинства людей. encodeURIComponent
преобразует строку js в экранированные UTF-8, а decodeURIComponent
работает только с экранированными байтами UTF-8. Он выдает ошибку для чего-то вроде decodeURIComponent('%a9'); // error
, потому что расширенный ascii недействителен utf-8 (хотя это все еще значение unicode), тогда как unescape('%a9'); // ©
. Поэтому вам нужно знать свои данные при использовании decodeURIComponent.
decodeURIComponent не будет работать "%C2"
или любой одиночный байт над 0x7f
, потому что в utf-8, который указывает часть суррогата. Однако decodeURIComponent("%C2%A9") //gives you ©
Unescape не будет работать должным образом на этом // ©
И это не вызовет ошибку, поэтому unescape может привести к ошибкам, если вы не знаете свои данные.