Я использую сериализацию PHP для сериализации объекта с большой строкой, в строке - специальный символ «-». Этот объект был сохранен, когда БД использовала latin1 charset, теперь я переношу db в UTF-8.Функция PHP unserialize перестает работать после изменения набора символов (от latin1 до UTF-8)
Я использую функцию PHP unserialize, чтобы вернуть объект, поскольку я изменил кодировку на UTF-8, и эта функция перестала работать. Я не знаю почему.
я изменить httpd.conf использовать:
AddCharset UTF-8 .utf8
AddDefaultCharset UTF-8
php.ini:
default_charset = "UTF-8"
и конвертировать все данные MySQL в UTF-8.
UPDATE Я ловлю ошибку PHP, когда я называю десериализируются функцию:
unserialize(): Error at offset 19146 of 23672 bytes in /xxx/xxx.php:18
Выполните команду SELECT col, HEX (col) ... ', чтобы показать нам шестерку для непослушного символа. Это поможет решить, являются ли данные неправильными в базе данных или данные обрабатываются некорректно после извлечения из базы данных. –
HEX - E28094, благодаря Рику. – Tony
Похоже, что это символ UTF-8 (http://www.fileformat.info/info/unicode/char/2014/index.htm), поэтому сторона mysql верна, и проблема в apache/php? – Tony