gpt4 book ai didi

PHP将无意义的字符插入字符串

转载 作者:行者123 更新时间:2023-12-04 05:47:14 25 4
gpt4 key购买 nike

我正在开发一个应用程序,我需要能够将字符串从 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简单地将字符串输出为十六进制,从而产生上面两个十六进制转储中的第一个。

最佳答案

这是 UTF-8 编码。
b0编码为 c2 b0 . a7变成 c2 a7 . da变成 c3 9a . 7a没有改变。

因此您的 b0 a7 da 7a在 UTF-8 中表示为 c2 b0 c2 a7 c3 9a 7a .

看来 Javascript 是 UTF-8 编码您的 body多变的。您可以尝试使用 utf8_decode function在 PHP 中。

关于PHP将无意义的字符插入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10521430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com