Krakozyabry" в базата данни или когато„Трябваше да помисля предварително“
Онзи ден попаднах в глупава ситуация. Пуснахме един уеб проект, всичко работи, кодът е написан и допълнен, базите данни са попълнени. Разработката върви на тестов хост, след това промените се качват на сървъра, цялата проверка се свежда до посещение на самия сайт и тестване на всичко и всичко. Изведнъж се оказва, че буквата "w" не се показва на сайта, а вместо нея има два безсмислени знака. Същата история се оказа и с буквата "И". Веднага влизаме в СУБД на сървъра и виждаме ... твърди "krakozyabry" вместо кирилица. Но на латиница се пише нормално.
Разбира се, всички мислеха за проблеми с кодирането и естествено това е така. Нека разгледаме по-подробно... Кодирането на таблицата е UTF-8, кодирането на необходимите колони е UTF-8, кодирането в заглавките на страниците е UTF-8, кодирането в браузъра е UTF-8. И разбира се, междинната връзка се провали, кодирането на връзката е cp1251. И всичко това само защото не са проверили идентичността на настройките на тестовия и работещия сървър на база данни. Глупава грешка, но данните в базата данни вече са пълни и трябва да ги върнем по някакъв начин. Гугъл всичко, което можах, намерих няколко интересни sql заявки, методи с шаманизъм на кодиране в дъмпове, използване на бележник и един php скрипт, който, след като работи без грешки, просто издаде същите йероглифи. Някои не работеха, други просто не работеха.
Моето решение е банално, но не намерих нищо подобно в мрежата. Ние пишем малък php скрипт за прехвърляне на необходимите таблици в необходимия формат.
Това е всичко. Скриптът направи точно това, което беше необходимо и беше написан за няколко минути, така че може да е изненадващо, че това може да бъде направено по-гъвкаво и оптимизирано, а също така би било хубаво да се прецака ООП.
Надявам се, че този скрипт ще бъде полезен на някого. Благодаря ви за вниманието.