Как-то мне пришлось работать с проектом, на котором после сбоя на хостинге, нескольких восстановлений базы и переносов с кодировками стало всё плохо. Нормального бэкапа нет, а данные в базе перемешаны: часть данных отображается нормально, часть кракозябрами. Т.е. выполнить какую-то конвертацию таблиц не представляется возможным. Мне пришлось включить голову и найти решение. Сразу скажу, что не дам простого готового инструмента, наподобие того, что делал для перекодировки сайта в utf8. Тут нужно хорошо понимать, что делается. Но, надеюсь, программист разберется. Главная цель этого сообщения - донести, что в любой ситуации можно найти решение.
Итак, имеем сайт, где файлы нормальные, а в базе данных часть информации хранится нормально, а часть испорчена перекодировкой.
0. Сделайте бэкап
Все знают, но не всегда помнят: какая бы плохая ситуация не была, её всегда можно сделать хуже. Поэтому не спешите что-то исправлять когда что-то сломалось. Начните с сохранения того, что есть.
1. Выясните, каким образом испорчены данные
Есть ряд сервисов, позволяющих определить, как произошла перекодировка текста. Мне понравился и помог сервис Артемия Лебедева. Скопируйте туда плохой текст и поймете, как его можно восстановить.
2. Проверьте на фрагменте текста восстановление используя свой метод перекодировки
Прежде всего нужна функция, которая будет проверять, хороший ли текст к нам пришел. У меня сайт работал в utf-8, поэтому функция имела вид:
function good($str)
{
return preg_match('#[а-яА-Я]#u',$str);
}
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».