У меня есть html-текст. Я закодировал его в php, используя функцию urlencode. Я хочу декодировать этот текст в javascript. когда я использую функцию unescape в javascript, он заменяет все специальные символы, но sapce заменяется на «+». как я могу сделать это правильно, чтобы пространство было заменено как само пространство ???
Вместо этого попробуйте использовать rawurlencode – urlencode делает некоторые вещи по-разному для «исторических» причин.
См. http://us.php.net/manual/en/function.urlencode.php для получения дополнительной информации.
PHP rawUrlEncode () == JavaScript encodeURIComponent ()
PHP rawUrlDecode () == JavaScript decodeURIComponent ()
Скобки являются исключениями из всего сказанного в этой статье.
geek mode on:
ложный
PHP rawUrlEncode() !== JavaScript encodeURIComponent()
но правда
PHP rawUrlEncode() == JavaScript encodeURIComponent()
Другими словами, существует множество специальных символов, которые не рассматриваются как безопасные в rawurlencode, когда они находятся в encodeURIComponent.
Попробуй это:
return decodeURIComponent((str + '').replace(/\+/g, '%20'));
Источник: http://phpjs.org/functions/urldecode:572