Оригинальный способ изменения кривой кодировки latin1 в ваших базах mysql на UTF8 или CP1251
Кроме манипуляций с импортом-экспортом и перекодировкой базы WordPress с помощью шаманства, существует и другой способ. Процесс долгий, но результат 100%-ый. Сегодня меня попросили перекодировать одну базу (не WordPress), которая также была когда то создана в неправильной кодировке latin1 и при переезде на новый хостинг, где в базе кодирова cp1251 (например мастерхост) и сайт превратился в кашу из мусора. Попробовав сначала рекомендации из различных форумов решил попробовать на кусочке текста во всем знакомом творении компании МС под именем Microsoft Word (использовался Word2003, но должно работать и на остальных версиях). Дело в том что в Ворде существует замечательная система восстановления поврежденного текста, которая не раз выручала при открытии файлов, созданных в древних версиях того же Ворда. Опыт над кусочком базы прошел успешно и я запустил процесс над всем файлом. Для статистики – размер базы на входе 5мб, на выходе при сохранении в Windows-1251 получилось 3,6мб. Весь процесс на компьютере P4-3200/1gb pc5300 занял более 1,5часов. Все это время Ворд был в полуподвешенном состоянии и не подавал признаков жизни кроме медленно ползущего ползунка в диалоге конвертации. После того как все будет готово, мы меняем везде где требуется упоминание о кодировке как в примере ниже:
CREATE DATABASE `kakayatobaza` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
на cp1251
CREATE DATABASE `kakayatobaza` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
или utf8
CREATE DATABASE `kakayatobaza` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
проще всего это делать поиском-заменой
и сохраняем файл в соответствующей кодировке! Чтобы было все наглядно понятно, создал небольшую видеоинструкцию по применению.
смотреть в действии (всего 300кб)
Связанные записи
55 комментариев
Страницы: « 1 [2] 3 » Show All
Трэкбеки и пингбеки
Страницы: « 1 [2] 3 » Show All
Комментарии не по теме удаляются! Читайте реадми дистрибутива, комментарии выше и FAQ! Прежде чем задавать вопрос, прочитайте это. Научитесь ценить чужое время!

(голосов: 10, средний: 4.40 из 5)

30 января 2008 в 8:38 (GMT+6)
образец кода выложи – посмотрим
30 января 2008 в 20:26 (GMT+6)
Вот кусочек исходного .sql:
---- Структура таблицы `wp_postmeta`
--
CREATE TABLE `wp_postmeta` (
`meta_id` bigint(20) NOT NULL auto_increment,
`post_id` bigint(20) NOT NULL default '0',
`meta_key` varchar(255) default NULL,
`meta_value` longtext,
PRIMARY KEY (`meta_id`),
KEY `post_id` (`post_id`),
KEY `meta_key` (`meta_key`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1615 ;
--
-- Дамп данных таблицы `wp_postmeta`
--
INSERT INTO `wp_postmeta` (`meta_id`, `post_id`, `meta_key`, `meta_value`) VALUES
(83, 14, 'keywords', 'мыс видный, санаторий в сочи, путевки в сочи, лечение, цены'),
(86, 14, 'description', 'Санаторий «Мыс Видный» расположен в экологически чистом районе, в пос. Хоста г. Сочи.'),
(98, 24, 'description', 'Оздоровительно-развлекательный комплекс «АкваЛоо» находится вблизи курортного поселка Лоо.'),
(99, 24, 'keywords', 'аквалоо, развлекательный комплекс, аквапарк, сочи, лоо, отдых, аква лоо'),
(106, 25, '_wp_attached_file', '/home/s/spasochiru/public_html/wp-content/uploads/akvalo-spec-16052007.doc'),
(107, 25, '_wp_attachment_metadata', 'a:0:{}'),
(114, 26, 'description', 'Санаторий им. Орджоникидзе расположен Центральной части Сочи на территории вечнозеленого парка'),
(117, 26, 'keywords', 'санаторий орджоникидзе, сочи, отдых, цены, лечение в сочи'),
(134, 32, '_wp_attached_file', '/home/s/spasochiru/public_html/wp-content/uploads/akter2007.doc'),
(135, 32, '_wp_attachment_metadata', 'a:0:{}'),
30 января 2008 в 22:02 (GMT+6)
решается так:
- устанавливаем THE BAT (если еще нету)
- создаем новое письмо в кодировке win1251
- вставляем этот кривой код туда
- сохраняем письмо как черновик
- просматривая этот черновик выбираем в контекстном меню ПЕРЕКОДИРОВКА и … получаем чистейший русский текст без “кракозябр”.
можно конечно сохранить файл и в текстовом редакторе в кодировку 1251, открыть в браузере и там выбрать режим УТФ8, но так получается русский текст с всякой гадостью вроде спецсимволов
вот результат декодирования
————————————
INSERT INTO `wp_postmeta` (`meta_id`, `post_id`, `meta_key`, `meta_value`) VALUES
(83, 14, ‘keywords’, ‘мыс видный, санаторий в сочи, путевки в сочи, лечение, цены’),
(86, 14, ‘description’, ‘Санаторий «Мыс Видный» расположен в экологически чистом районе, в пос. Хоста г. Сочи.’),
(98, 24, ‘description’, ‘Оздоровительно-развлекательный комплекс «АкваЛоо» находится вблизи курортного поселка Лоо.’),
(99, 24, ‘keywords’, ‘аквалоо, развлекательный комплекс, аквапарк, сочи, лоо, отдых, аква лоо’),
(106, 25, ‘_wp_attached_file’, ‘/home/s/spasochiru/public_html/wp-content/uploads/akvalo-spec-16052007.doc’),
(107, 25, ‘_wp_attachment_metadata’, ‘a:0:{}’),
(114, 26, ‘description’, ‘Санаторий им. Орджоникидзе расположен Центральной части Сочи на территории вечнозеленого парка’),
(117, 26, ‘keywords’, ‘санаторий орджоникидзе, сочи, отдых, цены, лечение в сочи’),
(134, 32, ‘_wp_attached_file’, ‘/home/s/spasochiru/public_html/wp-content/uploads/akter2007.doc’),
(135, 32, ‘_wp_attachment_metadata’, ‘a:0:{}’),
31 января 2008 в 2:22 (GMT+6)
Отличный способ с Bat!, базу 1,8 мб «перекодировала» за несколько секунд, залила обратно — и все готово! Кстати, Ваня, то что я тебе писала про префиксы непонятные — это были глюки кэша, по крайней мере мне так саппарт моего хостинга объяснил.
Спасибо за помощь! :) Все так просто оказалось!
29 марта 2008 в 18:23 (GMT+6)
Тестовый пример Штирлиц обработал без вопросов.
1 апреля 2008 в 2:43 (GMT+6)
Не Ворд, не Штирлиц, не другие редакторы мне не могут помочь. вот кусочек текста, который непонятно в какой кодировке
quot;summary";s:450:"?????‚?µ?????µ?‚-???????µ
а вот тут я более подробно расписал проблему
1 апреля 2008 в 9:17 (GMT+6)
лучше дамп базы вышлите мылом – адрес найдете в Контактах чтобы было понятнее
2 апреля 2008 в 0:53 (GMT+6)
Нашел достаточно удобный серви для перевода текста из одной кодировки в другую:
Нашел на сайте “География. Планета Земля” ( )
29 апреля 2008 в 14:58 (GMT+6)
а не судьба iconv -f latin1 -t cp1251 dump.sql > dump_cp1251.sql?
1 мая 2008 в 15:00 (GMT+6)
Здравствуйте!
Пробую использовать метод с The Bat!, но программа ничего не перекодирует. После использования функции Перекодировка на странице ничего не меняется ни в одном из режимов. Что я делаю не так?
1 мая 2008 в 15:14 (GMT+6)
кусочек дампа отправьте мне на мыло из раздела КОНТАКТЫ
27 мая 2008 в 21:52 (GMT+6)
На днях перевозил свои блоги, увы твои рекомендации в моем случае не помогли – пришлось конвертить через blob. Чтобы не повторятся и для ссылочки –
p.s. интерестно я один такой идиот, который сначала ввел домашний адрес, а уж потом заменил емейлом? :)
19 октября 2008 в 6:34 (GMT+6)
У меня это действие в Ворде вызывает его безвариантный краш. Убил себе сайт lingvomania.инфо совсем…
19 октября 2008 в 10:24 (GMT+6)
@Амикецо français aussi: дамп на мыло присылайте. покумекаем
19 октября 2008 в 21:58 (GMT+6)
Да я поторопился и всё уже восстановил. Дырищщи моих бубноплясок отовсюду торчат, но главное что — тексты читаются, новые добавлять можно. И ладно.
Не смогу даже описать, как в конечном итоге всё вышло. Вроде делал „по Чанишвили“ (похожий способ с вариациями предлагает и Codex) — но так только posts перекодировались хорошо, а каменты не хотели. Тогда я убил все таблицы, „установил“ Вордпресс и импортировал в него таблицу с постами.
21 января 2009 в 0:48 (GMT+6)
интересно, а такую штуку можно восстановить?
Îòêëèêè, îáñóæäåíèÿ â ñâÿçè ñ íàøèìè âå÷¸ðêàìè.
21 января 2009 в 0:51 (GMT+6)
mirra, ответ: ДА.
вот что выдал ворд:
:-)