LINUX.ORG.RU

Восстановить текст в БД

 ,


1

2

На каком-то этапе, кем-то при переносе БД была испорчена кодировка текстовых полях (кириллица). Так если к этим строкам применить изменение кодировки с OEM866 на win1251,то получаем

Имеем:
LэфЁхщ TшъЄюЁютшў ярёяюЁЄ: +L 123456 тvфрэ: +L+L+¦I=T-¦L¦ ¦T

Получаем:
Lндрей Tикторович паспорт: +L 123456 вvдан: +L+L+жI=T-жLж жT

почти полностью получилось восстановить,но есть проблема с некоторыми буквами. а есть вообще капец какой-то,скорее всего было написано большими буквами

Возможно ли восстановить информацию в таком запущенном случае?

Нереально, битые символы всё равно будут. Тут только разворачивать из заранее валидного бэкапа.

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

С бэкапом грустно, нет его

если восстановить и будут битые некоторые символы,при этом как говорил Жорж Милославский «понять бы в общих чертах»,то такой вариант тоже приемлем. Как например ФИО восстановилось, почти, да, проблема с первой буквой фамилии,но имя и отчество уже можно восстановить полностью.

LamerLinux
() автор топика
Ответ на: комментарий от LamerLinux

Как например ФИО восстановилось, почти, да, проблема с первой буквой фамилии,но имя и отчество уже можно восстановить полностью.

Ну вот примерно так оно и будет всё, лучше вариантов нет. В онлайне есть пара конверторов(гугл в помощь) из кодировки в кодировку, некоторые понимают даже вот такое битое, но качество результирующего текста +/- одинаковое, потому что при такой некорректной перекодировки часть информации безвозвратно теряется.

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

я не могу, даже частично,восстановить ту часть,что после «выдан»

«+L+L+¦I=T-¦L¦ ¦T»

это наверное полностью в утиль?

LamerLinux
() автор топика
Ответ на: комментарий от LamerLinux

это наверное полностью в утиль?

похоже на то

Pinkbyte ★★★★★
()

LibreOffice Calc попробуй. Я так вполне удачно распарсил текстовку lib.ru в кодировке koi8-r в UTF-8. Правда пришлось вдоволь поиграть с параметрами, зато получилось лучше, чем все мои потуги распарсить при помощи Perl. Там обьём просто был почти 20 000 наименований с авторами и адресами.

cadaber ★★
()
Последнее исправление: cadaber (всего исправлений: 2)

Я бы выгнал отдельную табличку в csv и затем уже разбирался, что там и питоном ее конвертировал.

По идее под конец можно прогнать еще через словарь.

AVL2 ★★★★★
()

Ну вот в этом примере видно, что L=А, T=В, v=ы. То есть надо создать свою таблицу перекодировки, которая в общем и целом повторяет 866=>1251, но меняет ещё и некоторые другие (судя по примеру, в основном, с кодами меньше 128) символы. Процесс придётся проводить в несколько прогонов, с анализом полученных результатов. Анализ будет слегка похож на то, чем занимался ГГ рассказа По «Золотой жук». Печально будет, если преобразование было необратимым, т.е. если L, кроме A, может означать ещё что-то.

Записей в БД много?

я не могу, даже частично,восстановить ту часть,что после «выдан»

По одной строчке не восстановишь. Надо смотреть, сопоставлять, если строчек такого вида много. Похоже на какие-то вусмерть перекодированные цифры, составляющие дату выдачи. Анализировать, где повторяющиеся символы. В общем, задача творческая. И гарантий, что результатом всё равно не окажется «в утиль», нет. Но попробовать можно.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

По всей видимости,таки крышка данным «+L+L+¦I=T-¦L¦ ¦T» всё что написано большими кириллическими превратилось в комбинацию этих символов

для примера

Lрина Tладимировна
+катерина Tергеевна
как видно Т это не только В, но и С. Так что тот кто это вел до меня просто чудак на букву «М». Что-то восстановлю, а что-то просто похороню... Всем спасибо.

LamerLinux
() автор топика
Ответ на: комментарий от LamerLinux

Надо применить азы криптологии - выяснить, какие буквы и фразы встрейались в части «+L+L+¦I=T-¦L¦ ¦T», проанализировать, какие буквы были заменены на какие символы (многие буквы на один символ), затем искать последовательности символов, которые соответствуют данным, которые встречались в той части записи (и/или вероятно будут в данной записи).

Chrabaszcz.
Zhrazaszzz.
Когда станет известно, что z = b или c, ищем в словаре [bc]hra[bc]as[bc][bc][bc]

Сложность во многом зависит от того, фамилии ли там, определённые фразы («рождён», «выдан»), или произвольный текст.

Ещё можно делать fuzzy matching со словарём встречаемых фамилий/имён/чего угодно, для того же «Тладимировна» других вариантов кроме «Владимировна» особо не найти.

token_polyak ★★★★★
()
Последнее исправление: token_polyak (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.