PHP反序列化失败,并出现非编码字符?

PHP反序列化失败,并出现非编码字符?,第1张

PHP反序列化失败,并出现非编码字符?

unserialize()
失败的原因:

$ser = 'a:2:{i:0;s:5:"héllö";i:1;s:5:"wörld";}';

是因为for的长度

héllö
wörld
是错误的,因为PHP本身无法正确处理多字字符串

echo strlen('héllö'); // 7echo strlen('wörld'); // 6

但是,如果您尝试

unserialize()
使用以下正确的字符串:

$ser = 'a:2:{i:0;s:7:"héllö";i:1;s:6:"wörld";}';echo '<pre>';print_r(unserialize($ser));echo '</pre>';

有用:

Array(    [0] => héllö    [1] => wörld)

如果使用PHP,

serialize()
它应该正确计算多字节字符串索引的长度。

另一方面,如果要使用多种(编程)语言处理序列化数据,则应将其忘记,而转而使用JSON(JSON)之类的方法,该方法更加标准化。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5023862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存