我正在开发一个应用程序,我需要能够将字符串从 JavaScript 发送到 PHP。起初我只是通过$_POST
变量发送它,但我注意到它正在将值插入到字符串中。
然后我重新编码了这两个部分以使用 base 64 来发送数据,因为我假设数据在传输中被破坏了。字符串传输得很好,没有错误,但是当我将它从 base 64 转换回 base 16 时,它的错误与以前完全相同!
这是两个字符串的比较(十六进制转储)。每个字符串中有两个有意义的数据块,PHP 似乎只在这些区域附近出错。第一行是 PHP 如何解释字符串,第二行是我如何从 JavaScript 发送它。
c2 b0 c2 a7 c3 9a 7a 00 00 00 c2 bb 30 4d 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0 a7 da 7a 00 00 00 00 00 00 bb 30 4d 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
为什么会出现这些幻像字节?
编辑:这是我正在使用的代码。
JavaScript:
function sendRequest(body)
{
var url = "../update/index.php";
$.post(url,{msg:body},function(data,status,jqx)
{
$("#response").html(data);
});
}
body
是一个字符串,其开头被硬编码为"\u00b0\u00a7\u00da\u007a"
.
然后在 PHP 中:
$msg =$_POST['msg'];
plain_hex_dump($msg);
plain_hex_dump
简单地将字符串输出为十六进制,从而产生上面两个十六进制转储中的第一个。