与Base64解码PHP的结果不一致

与Base64解码PHP的结果不一致,php,json,base64,linden-scripting-language,Php,Json,Base64,Linden Scripting Language,我在SecondLife中有一个脚本,它构建了一个json字符串,该字符串经过base64编码并发送到PHP脚本 Login(string action) { string json_string = "{\"Action\": \""+action+"\", \"Name\": \""+simName+"\", \"OwnersKey\": \""+ (string)llGetOwner() +"\", \"ObjectID\": \""+ (string)objectID +"\",

我在SecondLife中有一个脚本,它构建了一个json字符串,该字符串经过base64编码并发送到PHP脚本

Login(string action)
{
    string json_string = "{\"Action\": \""+action+"\", \"Name\": \""+simName+"\", \"OwnersKey\": \""+ (string)llGetOwner() +"\", \"ObjectID\": \""+ (string)objectID +"\", \"ParcelName\": \""+ parcelName +"\"}";
    string data = "Data=" + llStringToBase64(json_string);
    toWebPage(data);
}

toWebPage(string params)
{
    params += "&FromSL=true";
    string tst = "";
    if(DEBUG)
    {
        tst = "/tst";
    }
    myRequest = llHTTPRequest(URL + PRODUCTNAME + tst + "/"+controller+".php",
  [HTTP_METHOD, "POST",
   HTTP_MIMETYPE, "application/x-www-form-urlencoded"],
   params);
}
我有两次调用登录脚本

Login("RegisterTower");
创建json字符串

{"Action": "RegisterTower", "Name": "Korzun", "OwnersKey": "8d13fa0f-b54d-43c9-8426-f7cb28f93cfd", "ObjectID": "be4885a4-a596-6a65-925e-470f149e9b63", "ParcelName": "~Lost Lands~"}
{"Action": "CheckInTower", "Name": "Korzun", "OwnersKey": "8d13fa0f-b54d-43c9-8426-f7cb28f93cfd", "ObjectID": "be4885a4-a596-6a65-925e-470f149e9b63", "ParcelName": "~Lost Lands~"}

创建json字符串

{"Action": "RegisterTower", "Name": "Korzun", "OwnersKey": "8d13fa0f-b54d-43c9-8426-f7cb28f93cfd", "ObjectID": "be4885a4-a596-6a65-925e-470f149e9b63", "ParcelName": "~Lost Lands~"}
{"Action": "CheckInTower", "Name": "Korzun", "OwnersKey": "8d13fa0f-b54d-43c9-8426-f7cb28f93cfd", "ObjectID": "be4885a4-a596-6a65-925e-470f149e9b63", "ParcelName": "~Lost Lands~"}
这些json字符串由base64编码并发送到php脚本。他们使用的第一个脚本是Main.php

<?php
include_once "Controller.php";
$params = $_GET;
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $params = $_POST;
}
Controller::Process($params);
?>
为什么第二个json字符串用

"~Lost LandsHŸ
第一次是什么时候

"~Lost Lands~"}
更新:正如Desting Dabble所建议的 每次$data[“data”]的内容都是

eyJBY3Rpb24iOiAiUmVnaXN0ZXJUb3dlciIsICJOYW1lIjogIktvcnp1biIsICJPd25lcnNLZXkiOiAiOGQxM2ZhMGYtYjU0ZC00M2M5LTg0MjYtZjdjYjI4ZjkzY2ZkIiwgIk9iamVjdElEIjogImJlNDg4NWE0LWE1OTYtNmE2NS05MjVlLTQ3MGYxNDllOWI2MyIsICJQYXJjZWxOYW1lIjogIn5Mb3N0IExhbmRzfiJ9 

我假设现在我已经发布了这篇文章,问题是第二篇文章末尾的空间。我发送的原始数据是

eyJBY3Rpb24iOiAiQ2hlY2tJblRvd2VyIiwgIk5hbWUiOiAiS29yenVuIiwgIk93bmVyc0tleSI6ICI4ZDEzZmEwZi1iNTRkLTQzYzktODQyNi1mN2NiMjhmOTNjZmQiLCAiT2JqZWN0SUQiOiAiYmU0ODg1YTQtYTU5Ni02YTY1LTkyNWUtNDcwZjE0OWU5YjYzIiwgIlBhcmNlbE5hbWUiOiAifkxvc3QgTGFuZHN+In0=

那么现在我该如何解决这个问题呢?

在你使用
base64_decode()
之前,你能展示一下这两次使用
$data[“data”]
的内容吗?用结果更新是的,你的假设很可能是正确的,因为我刚刚查看了
base64_decode()
文档中的一个早期问题,其中提供了(可能)修复:将空格替换为
+
符号。这就是我要求使用base64编码数据的原因。:
str\u替换(''''+',$str)
?感谢得体的Dabbler,你能添加你的注释作为答案吗,这样我就可以勾选它:D
eyJBY3Rpb24iOiAiQ2hlY2tJblRvd2VyIiwgIk5hbWUiOiAiS29yenVuIiwgIk93bmVyc0tleSI6ICI4ZDEzZmEwZi1iNTRkLTQzYzktODQyNi1mN2NiMjhmOTNjZmQiLCAiT2JqZWN0SUQiOiAiYmU0ODg1YTQtYTU5Ni02YTY1LTkyNWUtNDcwZjE0OWU5YjYzIiwgIlBhcmNlbE5hbWUiOiAifkxvc3QgTGFuZHN In0=
eyJBY3Rpb24iOiAiQ2hlY2tJblRvd2VyIiwgIk5hbWUiOiAiS29yenVuIiwgIk93bmVyc0tleSI6ICI4ZDEzZmEwZi1iNTRkLTQzYzktODQyNi1mN2NiMjhmOTNjZmQiLCAiT2JqZWN0SUQiOiAiYmU0ODg1YTQtYTU5Ni02YTY1LTkyNWUtNDcwZjE0OWU5YjYzIiwgIlBhcmNlbE5hbWUiOiAifkxvc3QgTGFuZHN+In0=