MYSQL BLOB изменение кодировки cp1251/utf-8

Если неизвестно, в какой кодировке исходная строка — можно воспользоваться встроенной функцией PHP

mb_detect_encoding ($string);

есть мнение, что она не всегда корректно работает, но отличить UTF-8 от не UTF-8 она сможет.. Допуская, что “не-UTF-8″ это 1251 /как правило,именно так и есть на большинстве сайтов рунета, с которыми приходилось иметь дело*/) — вполне рабочий вариант
Решение в общем-то простое, после определения кодировок.. Использовать конвертацию из UTF-8 в WINDOWS-1251 и обратно для сериализованной строки.. а затем, (если нужна другая кодировка) элементы массива (строки или строковые поля объектов) конвертировать обратно..

$serialize_cp1251 = iconv('utf-8','windows-1251',$serialize_utf8);
$unserialize_cp1251 = unserialize($serialize_cp1251);

// теперь в $unserialize_cp1251 массив/объект, у которого строки в кодировке 1251 // по идее неплохо бы обойти рекурсивной функцией, которая преобразует все // строковые поля из одной кодировки в другую.

Обновлено: 28/01/2015 — 21:21

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *