我有一个网络应用程序,我首先将 JSON 数据存储在 cookie 中,然后每 x 秒保存到数据库。它只是打开与服务器的连接,服务器读取 cookie。它实际上并不通过 POST 或 GET 发送任何内容。
当我保存到 cookie 时,我的数据格式很好。但是,当我在 PHP 中使用它然后 setcookie 一个新的 json_encoded 数组时,它会用 + 符号替换空格,然后这些会显示在我的网络应用程序中。我找不到任何方法来禁用 json_encode 的字符串编码,也找不到解析这些加号的 JS 方法(使用 jQuery.parseJSON;stringify 的解析也不起作用)...有人知道吗:S?
来自精美手册 http://www.php.net/manual/en/function.setcookie.php:
请注意,当您发送 cookie 时,cookie 的值部分会自动进行 urlencode 编码,而当收到时,会自动解码并分配给与 cookie 名称同名的变量。如果你不想要这个,你可以使用setrawcookie()
相反,如果您使用的是 PHP 5。
但我认为你仍然想要对 cookie URL 进行编码,你只是想要%20
用于空格而不是+
。然而,urlencode http://php.net/manual/en/function.urlencode.php:
[...]由于历史原因,空格被编码为加号 (+)
你可以尝试使用rawurlencode http://www.php.net/manual/en/function.rawurlencode.php自己编码:
返回一个字符串,其中包含除-_.~
已替换为百分号 (%) 后跟两个十六进制数字。这是 RFC 3986 中描述的编码 [...]
进而setrawcookie
设置cookie。不幸的是,没有一个decodeURI https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/decodeURI, decodeURIComponent https://developer.mozilla.org/en/JavaScript/Reference/Global_Functions/decodeURIComponent,甚至是已弃用的unescape https://developer.mozilla.org/en/DOM/window.unescapeJavaScript 函数将转换+
回到一个空间;所以,你可能会被迫以艰难的方式强迫每个人都明白道理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)