Оригинальный способ изменения кривой кодировки 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 комментариев
Трэкбеки и пингбеки
Комментарии не по теме удаляются! Читайте реадми дистрибутива, комментарии выше и FAQ! Прежде чем задавать вопрос, прочитайте это. Научитесь ценить чужое время!

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

12 января 2008 в 5:07 (GMT+6)
Это круто!! Как раз то, что нужно, большое спасибо за видео и за инструкцию!
12 января 2008 в 6:11 (GMT+6)
Штирлиц наш, думаю бырее и не хуже сделает, мы так и делали, особенно остро при переходе с мускула 4-го на 4.1 с утф системой кодировки по умолчанию.
12 января 2008 в 11:15 (GMT+6)
скачал штирлица. изголялся он с кодировками на тестовом куске дольше ворда раза в 2 и выдал еще большую кашу. результат смотреть здесь
можете скачать тестовый пример и попробовать самостоятельно раскодировать, только напишите потом какие последовательности были
13 января 2008 в 19:02 (GMT+6)
Есть несколько методов и попроще все сделать
13 января 2008 в 19:19 (GMT+6)
ну так написали бы для примера.
PS не надо больше спамить с именем Участник XXX. здесь такое не прокатит
14 января 2008 в 14:12 (GMT+6)
Жесть какая, но тем не менее прикольно =) Word помощник сисадимнов…
14 января 2008 в 16:31 (GMT+6)
Чорт, 2007 ворд отказывается, говорит «слишком много ошибок» :)))
14 января 2008 в 16:53 (GMT+6)
2007офис вообще ужасный. возвращайся на 2003 :)
30 января 2008 в 0:11 (GMT+6)
Я думаю можно еще проще и быстрее.
1. Берем Total Commander
2. F3 на файле -> Вид -> выставляем кодировку что бы было читаемо
3. ctrl+A -> ctrl+C
4. Создаем пустой файл, сохраняем в нужной кодировке
5. ctrl+V
6. Запускаем поиск с заменой CHARSET=стар_кодировка CHARSET=новая_кодировка.
30 января 2008 в 0:14 (GMT+6)
пробовал все – не читает нормально ТОТАЛ эти кривые дампы. даже корректный UTF8 читает с ошибками иногда
30 января 2008 в 0:27 (GMT+6)
Ok. Берем другое, что читает и повторяем с пункта №3
Сегодня я небольшой дамп таким образом восстановил.
30 января 2008 в 0:32 (GMT+6)
если можно выложите кусочек вашего дампа, который вы восстанавливали – для тестирования. кстати есть еще и такой прикол что некоторые кривые дампы наполовину в одной кодировке, наполовину в другой. с ними сложнее бывает
30 января 2008 в 1:47 (GMT+6)
Только что посмотрел ваш образец. Мой был попроще. Я с такими тяжелыми случаями и не сталкивался. В этом случае действительно быстрее использовать Word…
Какими же кодировками его так перемешали?
30 января 2008 в 1:50 (GMT+6)
А Штирциц 4.0 однако прочитал ваш образец.
1. отключаем галочку декодировать при загрузке
2. открываем файл
3. UTF -> Раскодировать UTF-8
30 января 2008 в 2:41 (GMT+6)
Снесла ворд 2007, поставили 2003. Все равно облом! Делаю все по видео инструкции, а на выходе — те же самые кракозяблы, т.е. без изменений. Нателепатьте пжлста, что я могу делать не так?
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, ответ: ДА.
вот что выдал ворд:
:-)
21 января 2009 в 1:25 (GMT+6)
ого! :)
я перед тем как спросить пробовала как раз-таки вордом все варианты – и ничего не получилось.
и как ворд опознал этот текст? как какую кодировку?
21 января 2009 в 1:35 (GMT+6)
mirra, СЕРВИС-ИСПРАВИТЬ ПОВРЕЖДЕННЫЙ ТЕКСТ-РУССКИЙ(РОССИЯ) :)
вы наверное не так делали что то – я просто скопировал ваш кусок текста и вставил в чистый документ. а если вы выбираете открытие документа то насколько помню надо выбирать либо UTF-8 либо Кирилица(вин-1251) – в общем чтобы в “примере” символы были похожие. на куске текста потренируйтесь.
ЗЫ Или смените версию ворда :) в 2003-ей точно работает
21 января 2009 в 3:13 (GMT+6)
О, спасибо!
Целый день мучилась, а тут вон оно как! :) Все получилось.
16 февраля 2009 в 21:03 (GMT+6)
если у вас стоит офис2007 то порядок действий немного другой для запуска команды “восстановления” – описано в этом посте
17 мая 2009 в 22:25 (GMT+6)
первый сайт делал в базе cp1251, сейчас после переезда на новый хостинг с php5 используется база UTF8. у меня вопрос, как из 1251 в UTF8 перекодировать?
при все при том у меня стоит Oficce 2007.
а то по вышеприведеной ссылке решение не нашел.
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
20 мая 2009 в 17:44 (GMT+6)
тоесть как читается нормально?
я не могу русские символы прочитать – кракозябра…
чем ее читать чтобы русские символы читались?
NPP++ не читает!
20 мая 2009 в 18:30 (GMT+6)
Vagur, дамп в мыло пульни
7 июля 2009 в 18:46 (GMT+6)
Всё работает на УРА! пришлось конечно скосить 2007 Ворд. Но это того стоило. Всё прошло гладко как и на видео. Большое спасибо
16 июля 2009 в 17:31 (GMT+6)
После восстановления БД на хостере часть таблицы перекатилась с utf8 в latin1_swedish_ci (в частности весь контент оказался в этой кодировке)
Перепробовал уже все возможные методы-но результата 0
Вообщем один большой Need Help!!!
16 июля 2009 в 20:33 (GMT+6)
если восстанавливали автоматически то бывает так криво. вручнуб обычно нормально заливается архивный дамп (после пересохранения в нормальной кодировке)
16 июля 2009 в 20:48 (GMT+6)
Так дело в том что и не я восстанавливал. Восстанавливал хостер, после блокировки хостинг-аккаунта. Я так понял что при архивации у них с моей БД случилась такая “бяка”, как latin1_swedish_ci во всех “контентных” таблицах.
В итоге мне досталось это “восстановленное чудо”, которое пока никак не хочет приводиться в читабельный вид.
16 июля 2009 в 20:52 (GMT+6)
я про то и пишу что хостеры часто через Ж восстанавливают сами. попросите у них дамп файлом и на мыло скиньте мне
16 июля 2009 в 21:27 (GMT+6)
Ну аргументом кривого восстановления было: Суть проблемы в том, что мы имеем дело с не совсем стандартной инсталляцией WordPress. Кодировка подключения к базе не была задана в явном виде (строка определения кодировки UTF8 в конфигурационном файле закомментирована). В результате этого в базу, с описанием таблиц UTF8 клались данные в кодировке Latin1. Кроме того, некоторые таблицы базы били созданы в кодировке Latin1. Если такую комбинацию не трогать – она будет работать до первого переноса/восстановления.
Запросил. Как вышлют-перенаправлю.
6 февраля 2010 в 19:50 (GMT+6)
Ну парень – выручил. Огромная благодарность!
24 сентября 2010 в 19:22 (GMT+6)
5 баллов, я уж думал писец пришел. спасибо, огромное. А то прислали млин дамп… мне аш плакать захотелось: дамп в кодировке утф, на сайте выставлена кодировка 1251, а в дампе указана кодировка латин1… криворукие говноделы! какие кодировки тока не перепробовал, как ни крутил, а кроме стрекозябликов ниче ни видать. А тут раз и все гут) прям благодарность)
21 декабря 2010 в 23:46 (GMT+6)
Огромное спасибо! Очень простой и действительно рабочий способ.
16 января 2011 в 19:03 (GMT+6)
Иван, добрый вечер. Не знаю в какой теме написать, попробую сюда. У меня тоже вылазят различные кракозябры, но это происходит лишь тогда когда я провожу анализ страниц сайта на одном сервисе. Как думаешь стоит ли мне париться по этому поводу? Просто у всех нормально там отображается, а у меня нет. Вот я уже писал о моей проблеме. Заранее спасибо!
30 сентября 2011 в 23:45 (GMT+6)
а у меня с присоединенными файлами проблема!.. Присоединяю, отправляю.. На почте само сообщение читаемо а attachment – нет. Набор всяких символов!! Как побороть?
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>