Оригинальный способ изменения кривой кодировки 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. 16 Lecactus 30 января 2008 в 8:38 (GMT+6)

    те же самые кракозяблы, т.е. без изменений.

    образец кода выложи – посмотрим


  2. 17 sonika 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:{}'),


  3. 18 Lecactus 30 января 2008 в 22:02 (GMT+6)

    Вот кусочек исходного .sql:

    решается так:
    - устанавливаем 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:{}’),


  4. 19 sonika 31 января 2008 в 2:22 (GMT+6)

    Отличный способ с Bat!, базу 1,8 мб «перекодировала» за несколько секунд, залила обратно — и все готово! Кстати, Ваня, то что я тебе писала про префиксы непонятные — это были глюки кэша, по крайней мере мне так саппарт моего хостинга объяснил.
    Спасибо за помощь! :) Все так просто оказалось!


  5. 20 Ю.Б. 29 марта 2008 в 18:23 (GMT+6)

    Тестовый пример Штирлиц обработал без вопросов.


  6. 21 mekal 1 апреля 2008 в 2:43 (GMT+6)

    Не Ворд, не Штирлиц, не другие редакторы мне не могут помочь. вот кусочек текста, который непонятно в какой кодировке

    quot;summary";s:450:"?????‚?µ?????µ?‚-???????µ

    а вот тут я более подробно расписал проблему http://mywordpress.ru/support/viewtopic.php?pid=15827


  7. 22 Lecactus 1 апреля 2008 в 9:17 (GMT+6)

    Не Ворд, не Штирлиц, не другие редакторы мне не могут помочь. вот кусочек текста, который непонятно в какой кодировке

    quot;summary";s:450:"?????‚?µ?????µ?‚-???????µ

    а вот тут я более подробно расписал проблему http://mywordpress.ru/support/viewtopic.php?pid=15827

    лучше дамп базы вышлите мылом – адрес найдете в Контактах чтобы было понятнее


  8. 23 Саша 2 апреля 2008 в 0:53 (GMT+6)

    Нашел достаточно удобный серви для перевода текста из одной кодировки в другую: http://rgo.ru/projects/soft_online/kodirovka/

    Нашел на сайте “География. Планета Земля” ( http://rgo.ru )


  9. 24 Neo_mat 29 апреля 2008 в 14:58 (GMT+6)

    а не судьба iconv -f latin1 -t cp1251 dump.sql > dump_cp1251.sql?


  10. 25 Василий 1 мая 2008 в 15:00 (GMT+6)

    Здравствуйте!

    Пробую использовать метод с The Bat!, но программа ничего не перекодирует. После использования функции Перекодировка на странице ничего не меняется ни в одном из режимов. Что я делаю не так?


  11. 26 Lecactus 1 мая 2008 в 15:14 (GMT+6)

    Здравствуйте!

    Пробую использовать метод с The Bat!, но программа ничего не перекодирует. После использования функции Перекодировка на странице ничего не меняется ни в одном из режимов. Что я делаю не так?

    кусочек дампа отправьте мне на мыло из раздела КОНТАКТЫ


  12. 27 Роланд Чанишвили 27 мая 2008 в 21:52 (GMT+6)

    На днях перевозил свои блоги, увы твои рекомендации в моем случае не помогли – пришлось конвертить через blob. Чтобы не повторятся и для ссылочки – http://www.chanishvili.org/latin1-to-utf8/

    p.s. интерестно я один такой идиот, который сначала ввел домашний адрес, а уж потом заменил емейлом? :)


  13. 28 Амикецо français aussi 19 октября 2008 в 6:34 (GMT+6)

    У меня это действие в Ворде вызывает его безвариантный краш. Убил себе сайт lingvomania.инфо совсем…


  14. 29 Lecactus 19 октября 2008 в 10:24 (GMT+6)

    @Амикецо français aussi: дамп на мыло присылайте. покумекаем


  15. 30 Амикецо français aussi 19 октября 2008 в 21:58 (GMT+6)

    дамп на мыло присылайте. покумекаем

    Да я поторопился и всё уже восстановил. Дырищщи моих бубноплясок отовсюду торчат, но главное что — тексты читаются, новые добавлять можно. И ладно.
    Не смогу даже описать, как в конечном итоге всё вышло. Вроде делал „по Чанишвили“ (похожий способ с вариациями предлагает и Codex) — но так только posts перекодировались хорошо, а каменты не хотели. Тогда я убил все таблицы, „установил“ Вордпресс и импортировал в него таблицу с постами.


  16. 31 mirra 21 января 2009 в 0:48 (GMT+6)

    интересно, а такую штуку можно восстановить?
    Îòêëèêè, îáñóæäåíèÿ â ñâÿçè ñ íàøèìè âå÷¸ðêàìè.


  17. 32 Lecactus 21 января 2009 в 0:51 (GMT+6)

    mirra, ответ: ДА.
    вот что выдал ворд:

    Отклики, обсуждения в связи с нашими вечёрками.

    :-)


Трэкбеки и пингбеки

  1. Sonika’s blog » Конструктор форм cforms — теперь на русском!
  2. iAdmins.ru » О перекодировке баз из latin1 в cp1251 или utf8
  3. Переехавши | Сетевой журнал Луганского Медведа

Страницы: « 1 [2] 3 » Show All

Комментарии не по теме удаляются! Читайте реадми дистрибутива, комментарии выше и FAQ! Прежде чем задавать вопрос, прочитайте это. Научитесь ценить чужое время!

 Имя (обязательно)  EMAIL (обязательно)  АДРЕС ЛИЧНОГО БЛОГА

Вы соглашаетесь с правилами


При добавлении HTML|CSS|JS|PHP кода в комментарий, оформляйте его через кнопку КОД

 

Получать комментарии по RSS Адрес трэкбека