serialize()를 사용하여 데이터를 직렬화한 다음 데이터베이스에 삽입한 다음 unserialize()를 사용하여 역직렬화하고 일부 데이터 문자열 오류가 발생합니다.
오류 내용은 다음과 같습니다.unserialize() [ function.unserialize ]: 2544바이트의 오프셋 0에 오류가 있습니다.
구글에서 여러 해결 방법을 검색해 보니 모두 인코딩 문제로 인해 문제가 발생했다고 합니다.
그래서 삽입한 곳이 base64_encode(serialize($str));로 변경되었습니다.
제가 있는 곳은 읽어보니
unserialize(preg_replace('!s:(d+):"(.*?)";!se', '"s:".strlen("$2").":로 변경되었습니다. "$2";"', $string))
해보았지만 완전히 해결되지 않았습니다. 나중에 일부 데이터그램에서 동일한 오류가 발생했습니다. 백그라운드 데이터를 보면 삽입된 내용이 아래의 잘못된 코드와 유사한 것으로 바뀌었습니다.
< /p>
이유를 알 수 있도록 도와주세요. 가급적이면 더 자세히 설명해주세요.
소스 데이터를 게시하세요. 그렇지 않으면 어떻게 테스트할 수 있나요? .
직렬화된 데이터에 문제가 있는지 확인하세요. 이전에는 serialize를 사용했는데 항상 문제가 있어서 json_decode
로 변경할 수밖에 없었습니다.base64_encode("a:1") == "YTox"
.해당 데이터는 왜곡되지 않고 base64로 인코딩되었습니다.
으아아아