Оригинальный способ изменения кривой кодировки 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. 1 sonika 12 января 2008 в 5:07 (GMT+6)

    Это круто!! Как раз то, что нужно, большое спасибо за видео и за инструкцию!


  2. 2 Lynx 12 января 2008 в 6:11 (GMT+6)

    Штирлиц наш, думаю бырее и не хуже сделает, мы так и делали, особенно остро при переходе с мускула 4-го на 4.1 с утф системой кодировки по умолчанию.


  3. 3 Lecactus 12 января 2008 в 11:15 (GMT+6)

    Штирлиц наш, думаю бырее и не хуже сделает

    скачал штирлица. изголялся он с кодировками на тестовом куске дольше ворда раза в 2 и выдал еще большую кашу. результат смотреть здесь

    можете скачать тестовый пример и попробовать самостоятельно раскодировать, только напишите потом какие последовательности были


  4. 4 Участник ********* 13 января 2008 в 19:02 (GMT+6)

    Есть несколько методов и попроще все сделать


  5. 5 Lecactus 13 января 2008 в 19:19 (GMT+6)

    Есть несколько методов и попроще все сделать

    ну так написали бы для примера.
    PS не надо больше спамить с именем Участник XXX. здесь такое не прокатит


  6. 6 mikolka 14 января 2008 в 14:12 (GMT+6)

    Жесть какая, но тем не менее прикольно =) Word помощник сисадимнов…


  7. 7 sonika 14 января 2008 в 16:31 (GMT+6)

    Чорт, 2007 ворд отказывается, говорит «слишком много ошибок» :)))


  8. 8 Lecactus 14 января 2008 в 16:53 (GMT+6)

    2007 ворд

    2007офис вообще ужасный. возвращайся на 2003 :)


  9. 9 i_mon 30 января 2008 в 0:11 (GMT+6)

    Я думаю можно еще проще и быстрее.
    1. Берем Total Commander
    2. F3 на файле -> Вид -> выставляем кодировку что бы было читаемо
    3. ctrl+A -> ctrl+C
    4. Создаем пустой файл, сохраняем в нужной кодировке
    5. ctrl+V
    6. Запускаем поиск с заменой CHARSET=стар_кодировка CHARSET=новая_кодировка.


  10. 10 Lecactus 30 января 2008 в 0:14 (GMT+6)

    Берем Total Commander
    2. F3 на файле -> Вид -> выставляем кодировку что бы было читаемо

    пробовал все – не читает нормально ТОТАЛ эти кривые дампы. даже корректный UTF8 читает с ошибками иногда


  11. 11 i_mon 30 января 2008 в 0:27 (GMT+6)

    Ok. Берем другое, что читает и повторяем с пункта №3

    Сегодня я небольшой дамп таким образом восстановил.


  12. 12 Lecactus 30 января 2008 в 0:32 (GMT+6)

    Берем другое, что читает и повторяем с пункта №3
    Сегодня я небольшой дамп таким образом восстановил.

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


  13. 13 i_mon 30 января 2008 в 1:47 (GMT+6)

    Только что посмотрел ваш образец. Мой был попроще. Я с такими тяжелыми случаями и не сталкивался. В этом случае действительно быстрее использовать Word…
    Какими же кодировками его так перемешали?


  14. 14 i_mon 30 января 2008 в 1:50 (GMT+6)

    А Штирциц 4.0 однако прочитал ваш образец.
    1. отключаем галочку декодировать при загрузке
    2. открываем файл
    3. UTF -> Раскодировать UTF-8


  15. 15 sonika 30 января 2008 в 2:41 (GMT+6)

    Снесла ворд 2007, поставили 2003. Все равно облом! Делаю все по видео инструкции, а на выходе — те же самые кракозяблы, т.е. без изменений. Нателепатьте пжлста, что я могу делать не так?


  16. 16 Lecactus 30 января 2008 в 8:38 (GMT+6)

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

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


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


  18. 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:{}’),


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

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


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

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


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

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

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

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


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

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

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

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

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


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

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

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


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

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


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

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

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


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

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

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

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


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

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

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


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

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


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

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


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

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

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


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

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


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

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

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

    :-)


  33. 33 mirra 21 января 2009 в 1:25 (GMT+6)

    ого! :)

    я перед тем как спросить пробовала как раз-таки вордом все варианты – и ничего не получилось.

    и как ворд опознал этот текст? как какую кодировку?


  34. 34 Lecactus 21 января 2009 в 1:35 (GMT+6)

    mirra, СЕРВИС-ИСПРАВИТЬ ПОВРЕЖДЕННЫЙ ТЕКСТ-РУССКИЙ(РОССИЯ) :)
    вы наверное не так делали что то – я просто скопировал ваш кусок текста и вставил в чистый документ. а если вы выбираете открытие документа то насколько помню надо выбирать либо UTF-8 либо Кирилица(вин-1251) – в общем чтобы в “примере” символы были похожие. на куске текста потренируйтесь.

    ЗЫ Или смените версию ворда :) в 2003-ей точно работает


  35. 35 mirra 21 января 2009 в 3:13 (GMT+6)

    О, спасибо!

    Целый день мучилась, а тут вон оно как! :) Все получилось.


  36. 36 Lecactus 16 февраля 2009 в 21:03 (GMT+6)

    если у вас стоит офис2007 то порядок действий немного другой для запуска команды “восстановления” – описано в этом посте http://forum.ru-board.com/topic.cgi?forum=5&topic=16945&start=720#5


  37. 37 Vagur 17 мая 2009 в 22:25 (GMT+6)

    если у вас стоит офис2007 то порядок действий немного другой для запуска команды “восстановления” – описано в этом посте http://forum.ru-board.com/topic.cgi?forum=5&topic=16945&start=720#5

    первый сайт делал в базе cp1251, сейчас после переезда на новый хостинг с php5 используется база UTF8. у меня вопрос, как из 1251 в UTF8 перекодировать?
    при все при том у меня стоит Oficce 2007.
    а то по вышеприведеной ссылке решение не нашел.


  38. 38 Lecactus 17 мая 2009 в 22:29 (GMT+6)

    Vagur, http://lecactus.ru/download/ms/eefonts.zip

    вообще если база в 1251 и вся читается в текстовом редакторе нормальном, то поиском-заменой замени везде cp1251_general_ci на utf8_general_ci и cp1251 на utf8 если есть отдельно, и сохрани файл в кодировке UTF8 без BOM и этот полученный дам уже загрузи в чистую базу, созданную также с правильным utf8_general_ci


  39. 39 Vagur 20 мая 2009 в 17:44 (GMT+6)

    Vagur, http://lecactus.ru/download/ms/eefonts.zip

    вообще если база в 1251 и вся читается в текстовом редакторе нормальном, то поиском-заменой замени везде cp1251_general_ci на utf8_general_ci и cp1251 на utf8 если есть отдельно, и сохрани файл в кодировке UTF8 без BOM и этот полученный дам уже загрузи в чистую базу, созданную также с правильным utf8_general_ci

    тоесть как читается нормально?
    я не могу русские символы прочитать – кракозябра…
    чем ее читать чтобы русские символы читались?
    NPP++ не читает!


  40. 40 Lecactus 20 мая 2009 в 18:30 (GMT+6)

    Vagur, дамп в мыло пульни


  41. 41 Виктор 7 июля 2009 в 18:46 (GMT+6)

    Всё работает на УРА! пришлось конечно скосить 2007 Ворд. Но это того стоило. Всё прошло гладко как и на видео. Большое спасибо


  42. 42 Vadim 16 июля 2009 в 17:31 (GMT+6)

    После восстановления БД на хостере часть таблицы перекатилась с utf8 в latin1_swedish_ci (в частности весь контент оказался в этой кодировке)

    Перепробовал уже все возможные методы-но результата 0

    Вообщем один большой Need Help!!!


  43. 43 Lecactus 16 июля 2009 в 20:33 (GMT+6)

    если восстанавливали автоматически то бывает так криво. вручнуб обычно нормально заливается архивный дамп (после пересохранения в нормальной кодировке)


  44. 44 Vadim 16 июля 2009 в 20:48 (GMT+6)

    если восстанавливали автоматически то бывает так криво. вручнуб обычно нормально заливается архивный дамп (после пересохранения в нормальной кодировке)

    Так дело в том что и не я восстанавливал. Восстанавливал хостер, после блокировки хостинг-аккаунта. Я так понял что при архивации у них с моей БД случилась такая “бяка”, как latin1_swedish_ci во всех “контентных” таблицах.

    В итоге мне досталось это “восстановленное чудо”, которое пока никак не хочет приводиться в читабельный вид.


  45. 45 Lecactus 16 июля 2009 в 20:52 (GMT+6)

    я про то и пишу что хостеры часто через Ж восстанавливают сами. попросите у них дамп файлом и на мыло скиньте мне


  46. 46 Vadim 16 июля 2009 в 21:27 (GMT+6)

    я про то и пишу что хостеры часто через Ж восстанавливают сами

    Ну аргументом кривого восстановления было: Суть проблемы в том, что мы имеем дело с не совсем стандартной инсталляцией WordPress. Кодировка подключения к базе не была задана в явном виде (строка определения кодировки UTF8 в конфигурационном файле закомментирована). В результате этого в базу, с описанием таблиц UTF8 клались данные в кодировке Latin1. Кроме того, некоторые таблицы базы били созданы в кодировке Latin1. Если такую комбинацию не трогать – она будет работать до первого переноса/восстановления.

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

    Запросил. Как вышлют-перенаправлю.


  47. 47 Заратустра 6 февраля 2010 в 19:50 (GMT+6)

    Ну парень – выручил. Огромная благодарность!


  48. 48 kotyara 24 сентября 2010 в 19:22 (GMT+6)

    5 баллов, я уж думал писец пришел. спасибо, огромное. А то прислали млин дамп… мне аш плакать захотелось: дамп в кодировке утф, на сайте выставлена кодировка 1251, а в дампе указана кодировка латин1… криворукие говноделы! какие кодировки тока не перепробовал, как ни крутил, а кроме стрекозябликов ниче ни видать. А тут раз и все гут) прям благодарность)


  49. 49 Alleon 21 декабря 2010 в 23:46 (GMT+6)

    Огромное спасибо! Очень простой и действительно рабочий способ.


  50. 50 Niczshe 16 января 2011 в 19:03 (GMT+6)

    Иван, добрый вечер. Не знаю в какой теме написать, попробую сюда. У меня тоже вылазят различные кракозябры, но это происходит лишь тогда когда я провожу анализ страниц сайта на одном сервисе. Как думаешь стоит ли мне париться по этому поводу? Просто у всех нормально там отображается, а у меня нет. Вот здесь я уже писал о моей проблеме. Заранее спасибо!


  51. 51 Александр 30 сентября 2011 в 23:45 (GMT+6)

    а у меня с присоединенными файлами проблема!.. Присоединяю, отправляю.. На почте само сообщение читаемо а attachment – нет. Набор всяких символов!! Как побороть?


  52. 52 Football Helmet Visors 8 апреля 2012 в 2:03 (GMT+6)

    If Obama goes to help in Massachusetts Do the tax payers pick up the tab or does the Democratic party repay the US?? OH OH! has Obama given the money from his Nobel Prize to the US government?? I dont think he can keep the #1+ million dollar prize. So where is the money?? dont tell me is is going to charity because it isnt Obamas go give away>


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

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

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

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

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


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

 

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