mediawiki и битые буквы в UTF-8 'Ш' и 'И'
Столкнулся с проблемой что некорректно отображается в UTF-8 названия страниц в mediawiki. Набросал небольшой скрипт.
/*
* Исправление кодировки букв "ш" и "И" в MYSQL
*/
/*
Частенько встречается при переносе бд, либо при шаманстве с кодировками
буквы "ш" и "И" оказываются битыми (речь идет о utf-8 конечно)
буква "ш" = chr(209).chr(63) / правильно chr(209).chr(136)
буква "И" = chr(208).chr(63) / правильно chr(208).chr(152)
Чтобы пофиксить делаем 2 запроса
*/
update `wiki_categorylinks`
set `cl_sortkey` = REPLACE(
`cl_sortkey`,
CONCAT( CHAR(209), CHAR(63) ),
CONCAT( CHAR(209), CHAR(136) )
);
update `wiki_categorylinks`
set `cl_sortkey` = REPLACE(
`cl_sortkey`,
CONCAT( CHAR(208), CHAR(63) ),
CONCAT( CHAR(208), CHAR(152) )
);
update `wiki_categorylinks`
set `cl_to` = REPLACE(
`cl_to`,
CONCAT( CHAR(209), CHAR(63) ),
CONCAT( CHAR(209), CHAR(136) )
);
update `wiki_categorylinks`
set `cl_to` = REPLACE(
`cl_to`,
CONCAT( CHAR(208), CHAR(63) ),
CONCAT( CHAR(208), CHAR(152) )
);
update `wiki_page`
set `page_title` = REPLACE(
`cl_to`,
CONCAT( CHAR(209), CHAR(63) ),
CONCAT( CHAR(209), CHAR(136) )
);
update `wiki_page`
set `page_title` = REPLACE(
`page_title`,
CONCAT( CHAR(208), CHAR(63) ),
CONCAT( CHAR(208), CHAR(152) )
);