转换为UTF-8后,我正在尝试解决MySQL数据库中某些(显然)受损的序列化数据的问题。当我尝试反序列化它们时,我会得到通常的结果:
Notice: unserialize() [function.unserialize]: Error at offset 1481 of 255200 bytes [...]
但是,鉴于这是一个多字节字符串,我无法弄清楚如何找到该字节偏移处的字符。我需要的是substr()
,但是对于字节,而不是字符。我怎么能这样做?
提前致谢。
答案 0 :(得分:2)
您必须执行substr($str, 1481, 2);
,substr($str, 1481, 3);
或substr($str, 1481, 4);
。如果它是UTF-8,你会在3个子串中找到它,因为UTF-8字符可能需要2到4个字符,具体取决于第一个字符。
我遇到了很多问题,所以如果你找不到编码的内容,请再次回答:-)我会尽力帮你。
祝你好运!编辑:不要忘记做标题(“Content-type:text / html; charset = utf8”);正确观察结果。
答案 1 :(得分:0)
substr
确实可以处理字节而不是字符。所以这应该返回第1481个字节:
substr($data, 1481, 1)