У меня есть веб-приложение, в котором я сначала храню данные JSON в файле cookie, а затем сохраняю в базе данных каждые x секунд. Он просто открывает соединение с сервером, и сервер читает файл cookie. Он ничего не посылает с помощью POST или GET.
Пока я сохраняю файл cookie, мои данные отформатированы в порядке. Однако, когда я работаю с ним в PHP, тогда setcookie новый массив json_encoded, он заменяет пробелы символами +, а затем они отображаются в моем веб-приложении. Я не могу найти способ отключить кодировку строк для json_encode, а также метод JS для разбора этих плюсовых символов (используя jQuery.parseJSON; синтаксис синтаксиса не работает). Кто-нибудь имеет представление: S?
Из тонкого руководства :
Обратите внимание, что часть значения cookie автоматически будет указана в urlencoded при отправке файла cookie, и когда он будет получен, он будет автоматически декодирован и назначен переменной с тем же именем, что и имя файла cookie. Если вы этого не хотите, вы можете использовать
setrawcookie()
вместо этого, если используете PHP 5.
Но я думаю, что вы все еще хотите, чтобы URL-адрес cookie был закодирован, вам просто нужно %20
для пробелов вместо +
. Однако, urlencode
:
[…] по историческим причинам, пробелы кодируются как плюсовые (+) знаки
Вы можете попробовать использовать rawurlencode
для его кодирования самостоятельно:
Возвращает строку, в которой все не-буквенно-цифровые символы, кроме
-_.~
,-_.~
знаком процента (%), за которым следуют две шестнадцатеричные цифры. Это кодировка, описанная в RFC 3986 […]
И затем setrawcookie
чтобы установить cookie. К сожалению, ни один из decodeURI
, decodeURIComponent
или даже устаревшие функции decodeURIComponent
JavaScript не преобразуют обратно +
в пространство; так что вы, вероятно, застряли, заставляя всех чувствовать трудный путь.