2009-07-09 2 views
24

У меня есть html-текст. Я закодировал его в php, используя функцию urlencode. Я хочу декодировать этот текст в javascript. Когда я использую функцию unescape в javascript, она заменяет все специальные символы, но sapce заменяется на «+». как я могу сделать это правильно, чтобы пространство было заменено как само пространство ???php javascript url encoding

ответ

16

Попробуйте вместо этого использовать rawurlencode - urlencode делает некоторые вещи по-разному «по историческим причинам».

Для получения дополнительной информации см. http://us.php.net/manual/en/function.urlencode.php.

+0

tht работает для меня – Andromeda

48

PHP rawUrlEncode() == JavaScript encodeURIComponent()

PHP rawUrlDecode() == JavaScript decodeURIComponent()

+1

be ware, что php urlencode не совместим с javascript, поэтому вместо этого следует использовать rawUrlEncode. –

+0

Не работает для символа '+'! – coderunner

+0

Работа для меня (((PHP))) $ msg = array(); $ msg ['added'] = rawUrlEncode ($ complexAddsWithHTMLMarkup); echo json_encode ($ msg); ...... (((jQuery ajax dataType json))) decodeURIComponent (msg.adds); – Coisox

3

скобку являются исключениями из всего сказанного в этом сообщении. Режим

Компьютерщик на:

ложные

PHP rawUrlEncode() !== JavaScript encodeURIComponent() 

но верно

PHP rawUrlEncode() == JavaScript encodeURIComponent() 

Другими словами, есть много специальных символов, которые не рассматриваются как безопасные в rawurlencode, когда они находятся в encodeURIComponent.