<< Что когда есть | На главную | Русский язык >>

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) )
);



 




Комментировать Отправить TrackBack