LINUX.ORG.RU

Восстановить испорченный текстовый файл

 ,


0

2

Всем привет кто заглянул сюда! Помогите пожалуйста, восстановить текстовый файл. Не пойму в чем проблема, часть файла читабельна (если декодировать в без BOM в нотпад++ виндовсе), а другая непонятные символы и некоторые выделенные черным цветом. ОС xubuntu, неожиданно такая петрушка случилась, текстовый файл находится на внешнем диске.

Ответ на: комментарий от anonymous

Вставляю кусок из моего испорченного файла иероглефы, а там тоже кракозябр показывает. Для наглядости даю ссылку http://postimg.org/image/mvlnoa0ff/ там рамке №1 декодируется в без BOM, т.е ру словечки, в рамке №2 остается примерно то же. То ли во внешнем диске сектора повреждены, то ли файл повредился, хотелось бы выяснить.

grdemik
() автор топика

Так дай небольшой кусок текста. Живого и испорченного. Несколько слов. Только не картинкой, а текстом

anonymous
()
Ответ на: комментарий от grdemik

№2 вообще на текст не похоже. Только первые две строчки похожи до символов «=======», а дальше похоже на набор каких-то двочиных данных. Ты уверен, что это именно текстовый файл, а не файл из какой-то программы?

Попробуй определить тип файла программой file (в Linux).

$ file <file>
Zubok ★★★★★
()
Ответ на: комментарий от anonymous

Живого текста нет, только испорченный, но тамм... текст не дам.

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

При открытии в firefox`е выскакивает окошко его скачать. Подскажите пожалуйста, как кодировку изменить файла?

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

Получил: /.../.../файл: data

Откуда вообще этот файл? Видно же, что часть файла - это уникод, а вторая часть вообще в чем-то чудовищном. Похоже просто на бинарный файл какой-то.

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

Это мой файл, он спокойно открывался mousepad до недавнего времени. А тут на тебе.. и кракозябры. Погуглил и ввел: sudo file -bi /.../.../файл ,выдал следующее application/octet-stream; charset=binary

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

Это шифровка из госдепа. По поводу Грибоедова.

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

не подскажите как?

head --bytes=200 файл.txt > кусок.txt

Сорри, перепутал, я решил, что ты спрашивал, как выложить кусок файла.

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

Ну, если так, то не знаю. Либо кодировка несколько раз перевернулась, либо битый файл. Видно сразу, что файл в уникоде когда-то был.

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

Восстановить как-то можно, нет? Меня это интересует. И как кодировка могла перевернуться несколько раз?

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

1) Нужно было делать бекапы.

2) Вырезайте куски, которые начинаются с Ð, сохраняйте в latin1 и декодируйте их как UTF8.

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

И еще, открываю в Abiword там символов из скрина, что в рамке №1 отображаются как надо, но символов из рамки №2 наамного меньше чем в Sublime Text, а Mousepad вообще не открывает.

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

1- Как ни странно с утра про бекапы внутренний голос... а к вечеру уже паника) 2- Попробую

grdemik
() автор топика
#!/usr/bin/perl 
use strict;
use warnings;
use Encode;

open(my $fp, "<foo");

my $line;

while($line= <$fp>){
	$line= decode("utf8",$line);
	print $line;
}

Сохрани скрипт в файл decode.pl, а свой файл скопируй в каталог с скриптом и обзови копию foo. Выполни команду:
perl decode.pl
Доложишь по форме о результатах.

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

Восстановить как-то можно, нет? Меня это интересует.

http://storage9.static.itmages.ru/i/14/1228/h_1419807646_8680325_cc25822d4d.png

У тебя до места, обозначенного синей стрелкой, идет уникод, а после идет какая-то абракадабра со спецсимволами из первой части кодовой страницы ascii: STX, EOT, DLE, ACK и т . д.

И как кодировка могла перевернуться несколько раз?

Открываешь его в разных редакторах разной природы, сохраняешь файл там — вот и могло случайно произойти где-то. Один раз открыл в notepad+, другой раз в gedit (или чем там в xubuntu смотрел?). Из вида бинарной фигни, начиная с синей стрелки, кодировка не угадывается никак.

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

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

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

Тогда открой свой файл в текстовом редакторе, чтоб было так же, как на скриншоте. Скопируй всё это в буфер обмена и сохрани в foo, выполни скрипт ещё раз.

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

У тебя до места, обозначенного синей стрелкой, идет уникод, а после идет какая-то абракадабра со спецсимволами из первой части кодовой страницы ascii: STX, EOT, DLE, ACK и т . д.

Точнее до восклицательного знака (находится левее стрелки). Это все читабельно в AbiWord и nano, а вот все что ниже, разные редакторы по разному иероглифы кажут.

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

Редактором mousepad не открывает(хотя только им и токрывал раннее).

Копирую из sublime text, текст сохраняется до восклицательного знака, все что после нет, а это 200ти с лишним строк кракозябр. После восклицательного знака сохраняет только пару десятков символов. Команду выполнил, терминал показал что я вставил в файл, только строчки появились типа «Wide character in print at decode.pl line 12, <$fp> line 2».

Копирую из abiword, но текст меняется когда его вставляю в файл. После выполняю команду, текст в терминале становится схож с открытым файлом в abiword, но строк типа «Wide character in print at decode.pl line 12, <$fp> line 2» нет.

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

Похоже у тебя часть файла в utf8, а вторая в koi8r, либо koi8r вперемешку с utf8. Что дальше? Или давай фрагмент файла. Достаточно будет 10 байт или сам ломай голову.
Похоже что всё читается, смог восстановить фрагменты по 2-3 кириллические буквы, но это потому что я знаю коды соответствующих символов. Дальше по таблицам юникода искать не собираюсь ничего.

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

10 байт это сколько символов или..?

Знаю что следующее слово после восклицательного знака (на скрине) это "Особенно,"

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

10 символов, давай 10 после восклицательного знака, буду шатать, как только (и если вообще) совпадёт, кину починяющий скрипт.

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

Я об этом сначала и подумал, но он работает нормально, все открывает. А кусок файла тем неменее испортился по какой-то причине.

Возможно ли тогда восстановить с него этот файл или файл восстановится в испорченом состоянии?

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

Открываешь терминал, там вбиваешь сию команду, файл.txt это имя твоего похереного файла, кусок.txt- файл куда будет сохранён фрагмент из похеренного файла, а 200 - число байт которые будут сохранены. 200 байт это от 100 до 200 символов.

fero ★★★★
()

До сего момента, я предполагал, что начало файла нормально читается, проблемы начинаются между 430 и 440 строками. В таком случае мы неправильно сделали, ты мне прислал первые байты файла, а нужен его конец.

tail --bytes=30 испорченый_файл > фрагмент_испорченного_файла

В любом случае плохие новости, я не смог декодировать то что ты мне прислал. Читаемые и не читаемые фрагменты идут вперемешку на протяжении всего текста?

fero ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.