我正在使用PayPal IPN并将IPN数据消息插入我们的数据库。我注意到它是一个部分对象。我假设序列化失败而不是插入。数据库或服务器未报告错误。
例如,这是部分序列化。第一部分由我留下:
... s:1:"4";s:12:"address_city";s:23:"COACALCO DE BERRIOZ
它在BERRIOZ之后直接停止。没有收尾报价等。
该值为address_city = COACALCODEBERRIOZÁBAL。所以它停止了重音字符。
字符编码为UTF-8。我验证了编码:
echo mb_internal_encoding();
它报告了UTF-8。 我还确保mysqli charset是UTF-8:
mysqli_set_charset($connect, "utf8");
就像我报道的那样,数据库或错误处理程序没有错误?使用非重音值对IPN对象进行了序列化。我在尝试查看记录时发现了这个问题,并且unserialize()报告了一个问题。
答案 0 :(得分:0)
这闻起来像"截断" MySQL的问题是utf8 / utf8mb4。请参阅"截断"在Trouble with UTF-8 characters; what I see is not what I stored
可能Á
未编码为utf8(十六进制C381
),而是编码为latin1(十六进制C1
)。
计划A:让客户使用utf8而不是latin1。
计划B:通过说
声明客户端正在使用latin1mysqli_set_charset($connect, "latin1");