php encoded 会转换哪些字符,加密en base64encoded字符串在数据库中不相同

我已经阅读了很多有关utf-8问题的similair问题的帖子,并尝试了一些但我无法找到原因。

我正在使用livecode,我想将一些字符串加密到数据库。所以我在Livecode中加密然后base64encode然后通过PHP / PDO发送到数据库。

加密 - > base64encode - > base64decode - >在livecode中解密工作正常。

现在当我将base64encoded数据发送到MariaDB数据库时,它会保存它,除了+已成为一个空格。

数据库,表和列都是utf8mb4_unicode_ci。

如果我通过数据库中的phpmyadmin手动将空间更改为+并使用Livecode读出,那么它base64decodes - >解密正确!

这是我用来连接和更新db的php文件:

Objective

你可以看到我在连接文件中尝试了一些字符集

// the connect.php file

$servername = "localhost";

$username = "blabla";

$password = "blabla";

try {

//$db = new PDO("mysql:host=$servername;dbname=blabla",$username, $password);

$db = new PDO("mysql:host=$servername;dbname=blabla;charset=utf8", $username, $password);

//$db = new PDO("mysql:host=$servername;dbname=blabla;charset=utf8mb4", $username, $password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'"));

// set the PDO error mode to exception

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//echo "Connected successfully";

}

catch(PDOException $e)

{

echo "Connection failed: " . $e->getMessage();

}

?>

还试过PDO :: PARAM_LOB

试过VARCHAR VARBIN BLOB,但这没有改变。

我的第一个猜测是Livecode在发布到php文件时做了一些奇怪的事情。但是在发送之前检查变量会在字符串中发送+。所以我真的不知道它出错了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值