Кракозябри» у БД або коли«Думати треба було раніше»

Днями зіткнувся з дурною ситуацією. Запустили один веб-проект, все працює, код пишеться та доповнюється, бази даних наповнюються. Розробка йде на тестовому хості, потім зміни заливаються на сервер, вся перевірка зводиться до заходу на сам сайт і тесту всього та всієї. Раптом з'ясовується, що буква «ш» не відображається на сайті, а замість неї два символи, що нічого не значать. Та сама історія опинилася з літерою «І». Заходимо в СУБД на сервері і бачимо... суцільні «кракозябри», замість кирилиці. Але латиниця записується нормально.

Звичайно, всі подумали на проблеми з кодуваннями і природно це так. Дивимося докладніше… Кодування таблиці – UTF-8, кодування потрібних стовпців – UTF-8, кодування у заголовках сторінки – UTF-8, кодування у браузері – UTF-8. Ну і звичайно підвело проміжне ланка, кодування з'єднання - CP1251. А лише тому, що не перевірили ідентичність налаштувань тестового і робочого сервера БД. Дурна помилка, але даних у БД вже повно і треба якось їх повернути. Прогугливши все, що можна було знайдено кілька цікавих sql-запитів, способи з шаманством кодувань в дампах, за допомогою блокнота, і один php-скрипт, який відпрацював безпомилково, просто видав ті ж ієрогліфи. Щось не допомогло, щось просто не підходить.

Моє рішення банальне, але я не знайшов подібного до просторів мережі. Пишемо маленький php скрипт перегону потрібних таблиць у потрібний формат.

От і все. Скрипт зробив саме те, що було потрібно і писався за пару хвилин, тому можуть бути здивування, що це можна зробити більш гнучким і оптимізованим, а ще й ОВП непогано прикрутити б.

Сподіваюся, що цей скрипт знадобиться будь-кому. Дякую за увагу.