У меня есть html-текст. Я закодировал его в php, используя функцию urlencode. Я хочу декодировать этот текст в javascript. Когда я использую функцию unescape в javascript, она заменяет все специальные символы, но sapce заменяется на «+». как я могу сделать это правильно, чтобы пространство было заменено как само пространство ???php javascript url encoding
ответ
Попробуйте вместо этого использовать rawurlencode - urlencode делает некоторые вещи по-разному «по историческим причинам».
Для получения дополнительной информации см. http://us.php.net/manual/en/function.urlencode.php.
PHP rawUrlEncode() == JavaScript encodeURIComponent()
PHP rawUrlDecode() == JavaScript decodeURIComponent()
be ware, что php urlencode не совместим с javascript, поэтому вместо этого следует использовать rawUrlEncode. –
Не работает для символа '+'! – coderunner
Работа для меня (((PHP))) $ msg = array(); $ msg ['added'] = rawUrlEncode ($ complexAddsWithHTMLMarkup); echo json_encode ($ msg); ...... (((jQuery ajax dataType json))) decodeURIComponent (msg.adds); – Coisox
Попробуйте это:
return decodeURIComponent((str + '').replace(/\+/g, '%20'));
Источник: http://phpjs.org/functions/urldecode:572
Я думаю, что это должно быть 'replace (/ \ +/g, ''))' – gregmatys
скобку являются исключениями из всего сказанного в этом сообщении. Режим
Компьютерщик на:
ложные
PHP rawUrlEncode() !== JavaScript encodeURIComponent()
но верно
PHP rawUrlEncode() == JavaScript encodeURIComponent()
Другими словами, есть много специальных символов, которые не рассматриваются как безопасные в rawurlencode, когда они находятся в encodeURIComponent.
tht работает для меня – Andromeda