Kinzersky.ru

Перекодировка средствами php

Просмотров: 3846Комментарии: 0
PHP

Недавно мне сдали на реанимацию один сайтик.. написанный 10 лет назад.

В нем отсутствовало верхнее меню и всплывающее подменю, выводимое на основе открытого основного..

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

Сам сайт - в cp1251

База - в koi8r. А данные в ней - в cp1251, т.е. нечитабельные совсем через phpmyadmin.

Но, как ни странно, программер докрутил все таким образом, что везде отображались корректные символы (кроме верхнего меню, которого вообще не было).

Как оказалось, за вывод этого меню отвечал xml-файл.. закодированный в cp1251. Но парсеры xml-были написаны таким образом, что не видели в этой кодировке ни одного символа. Перевожу кодировку или указываю в шапке кодировку - тогда меню становится видимым, но крякозябрами. Декодер лебедева говорит что родная кодировка UTF-8... пришлось разбираться в чужом грязном (и тухлом, за 10 лет-то) белье, искать в коде вывод всех данных из этого XML. А это титулы страниц, заголовки, древовидное меню для каждой страницы, шапка конечно же. Спасла меня функция iconv(). Когда доделал почти все, до меня вдруг дошло, что впринципе можно было бы так не мучиться, а в самом парсере циклом переконвертировать все строки массива, не лазя поиском по коду всего сайта.. Но возвращаться было уже лень, поэтому доделал..

Еще я бы руки оторвал, поджарил и скормил тому, что локализации сайтов кладет в подпапку основного хостинга с полностью уникальной файловой структурой.. к тому же код правился в разное время и похоже разными людьми, и всю работу по локализации ру пришлось делать заново на другом кириллическом языке.

Еще была попытка переконвертировать дамп базы и весь сайт целиком в UTF-8, но я застрял на двух вещах - дамп на мой локальный комп решил встать с ошибкой на какой-то там строке, данные загрузились процентов на 10, а все картинки помещены в базу, размер огромный, ручками кодировку не сменишь.. вобщем, веселые выдались выходные.

Совет тому, кто пишет самописные сайты - уважайте труд мучеников, разбирающих потом ваш хлам, делайте его в одной кодировке. Ну и хоть немного комментируйте код.

Веселые получились выходныеsmile выспаться бы теперь.

Оставить комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

     

  

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)