Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

Как различить текстовый файл от двоичного?   Найти похожие ветки 

 
SPeller ©   (2004-08-14 17:51) [0]

Подскажите, какие есть алгоритмы определения рода информации в файле? Где можно почитать, посмотреть примеры об этом?


 
TUser ©   (2004-08-14 17:56) [1]

Если встречается №0 - двоичный. Если нет - какой угодно. А понятия эти - семантические, абсолютно надежных алгоритмов, соотвественно, быть не может.


 
GuAV ©   (2004-08-14 18:44) [2]

Раньше AFAIR текстовым считался файл каждый байт которого имел 0 в старшем бите, т.е. русские текстовики не попадали. Сейчас - даже не знаю что понимать под текстом. Например Unicode - текст? RTF - текcт?


 
YurikGL ©   (2004-08-14 18:45) [3]

Можно попробовать по расширению, по заголовку...

Но присодединюсь к > TUser ©   (14.08.04 17:56) [1] что абсолютно-точных алгоритмов быть не может


 
SPeller ©   (2004-08-15 03:30) [4]

Абсолютно точно мне и не надо. Мне бы с бОльшей вероятностью. Причем вне зависимости от расширения. На счет нулевого байта - он может и не быть в двоичном, ззато могут быть #1, #2, #3 и т.п. На счет юникода - его пока что во внимание не принимать и считать двоичным.


 
Fay ©   (2004-08-15 03:35) [5]

Нет файлов "недвоичных". Понятие "текстовые файлы" требует определения. Реши для себя, что это такое и сразу получишь готовый алгоритм. 8)


 
Германн ©   (2004-08-15 03:52) [6]

В первом приближении - изучи таблицу ASCII в первой ее половине. Определи какие коды относятся к "печатным", а какие к "не печатным". Присутствие вышеупомянутых "не печатных" кодов в файле будет явным признаком того, что он не является текстовым в понимании времен ДОСа.


 
Anatoly Podgoretsky ©   (2004-08-15 07:34) [7]

SPeller ©   (15.08.04 03:30) [4]
При таком определении, реши для себя какие коды из 0-31 не могут встретиться в текстовом файле, ну и как встретишь хоть один такой считай, что у тебя файл не текстовый.


 
Anatoly Podgoretsky ©   (2004-08-15 07:37) [8]

Текстовым считается файл, который без преобразований можно вывести на текстовый принтер, терминал, стандартный вывод и увидеть на этих устройствах вывода без загадочных значков. Например не считается текстовым файлом - файл с управляющими эскейп последовательностями.


 
SPeller ©   (2004-08-15 09:12) [9]


> Fay ©   (15.08.04 03:35) [5]
> Нет файлов "недвоичных". Понятие "текстовые файлы" требует
> определения. Реши для себя, что это такое и сразу получишь
> готовый алгоритм.

Да знаю я прекрасно что текстовый файл это тот же двоичный, только данные в нем своеобразные.


> Германн ©   (15.08.04 03:52) [6]
> В первом приближении - изучи таблицу ASCII в первой ее половине.

Я ее и так знаю. И ascii и ansi.


> Anatoly Podgoretsky ©   (15.08.04 07:34) [7]
> SPeller ©   (15.08.04 03:30) [4]
> При таком определении, реши для себя какие коды из 0-31
> не могут встретиться в текстовом файле, ну и как встретишь
> хоть один такой считай, что у тебя файл не текстовый.

Видимо так и придется делать. Просто я думал что если в текстовом файле могу-таки встретиться парочка непечатаемых символов, то чтобы определить это и не заставлять юзера вручную переключать вид. А из символов 0-31, которые могут быть в файле, это 9, 10 и 13.


> Например не считается текстовым файлом - файл с управляющими
> эскейп последовательностями

Это что за последовательности?


 
olookin ©   (2004-08-15 09:16) [10]

А понятия эти - семантические

Интересная терминология. Семантика тоже разная бывает. В том числе, как я представляю, и в бинарных кодах.


 
YurikGL ©   (2004-08-15 09:32) [11]

http://www.yandex.ru/yandsearch?stype=&nl=0&text=%FD%F1%EA%E5%E9%EF+%EF%EE%F1%EB%E5%E4%EE%E2%E0%F2%E5%EB%FC%ED%EE%F1%F2% FF%EC%E8

Эскейп-последовательности предсталяют собой последовательность символов, начинающихся с ASCII-символа ESC (код 0x1B) и следующим за ним различных аргументов. Исторически, подобные последовательности применялись для управления неинтеллектуальными (dumb) терминалами для формирования команд на перевод строки, отступ, табуляция и т.д. В настоящее время широко применяются во многих ОС для формирования различных аттрибутов текста, формирования приглашения командной строки и т.д.


> Anatoly Podgoretsky ©   (15.08.04 07:37) [8]

В добавление к этому - надо решить, являются ли символы, например, псевдографики допустимыми.


 
Anatoly Podgoretsky ©   (2004-08-15 09:47) [12]

Считаются, это ASCII Extended


 
Юрий Зотов ©   (2004-08-15 10:39) [13]

> SPeller ©   (15.08.04 09:12) [9]

> это 9, 10 и 13.

Еще 12 (прогон страницы). Не исключен и 7 (звуковой сигнал). И еще 27 (escape), после которого могут идти, вообще говоря, любые символы - это и есть те самые escape-последовательности (управляющие команды принтера).


 
TUser ©   (2004-08-15 11:04) [14]

☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ - они могут быть в текстовом файле или нет?


> А понятия эти - семантические
>
> Интересная терминология. Семантика тоже разная бывает. В
> том числе, как я представляю, и в бинарных кодах.

Семантическое понятие (в моем понимании) - такая характеристика чего угодна, которая назначается пользователем по своему усмотрению, в соответствии с его (пользователя) представлениями о данном объекте, и не может существовать алгоритма, который определяет эту характеристику. Например понятие "первичный ключ" является семантическим, т.к. уникальность записей по данному набору доменов не позволяет однозначно утверждать, что это набор доменов - ключ или первичный ключ. Например, год рождаения в данном наборе данных может ни разу не повторяться, но проектировщик базы может заявить - повторение здесь возможно, т.е. это не ключ. В данном случае, файл - это набор байт. Понятия "текстовый" и "бинарный" относятся не к содержанию файла, а к методам работы с ним. Это только пользователь может сказать - каким образом обрабатывать информацию из данного файла.
PS. Термин взят из Дейта.


 
YurikGL ©   (2004-08-15 11:26) [15]


> TUser ©   (15.08.04 11:04) [14]

Привожу по памяти

Синтаксис - наука о связях между словами в предложении
Орфография - наука о связях между буквами в слове
Семантика - наука о связях между словами и объектами


 
GrayFace ©   (2004-08-15 12:31) [16]

> 0><¦!¶§-¦^v><L-^Ў - они могут быть в текстовом файле
> или нет?

Конечно.


 
GrayFace ©   (2004-08-15 12:31) [17]

Наверное.


 
SPeller ©   (2004-08-15 13:04) [18]


> надо решить, являются ли символы, например, псевдографики
> допустимыми.

Я намерен использовать только виндовую кодировку, поэтому вопрос о псевдографике у меня не стоит.


> TUser ©   (15.08.04 11:04) [14]
> &#9788;&#9658;&#9668;&#8597;&#8252;¶§&#9644;&#8616;&#8593;&#8595;&#8594;&#8592;&#8735;&#8596;&#9650;&#9660; - они могут быть в текстовом файле или
> нет?

Это в большинстве юникодные символы, их нет в ansi.


> Семантическое понятие ........

Я прекрасно понимаю что всё относительно. Но всё-же попытаться захватить пусть не все, но наиболее распространенные случаи попытаться можно.


> Юрий Зотов ©   (15.08.04 10:39) [13]
> Еще 12 (прогон страницы). Не исключен и 7 (звуковой сигнал).

Думаю что 12 можно оставить, 7 ещё надо подумать, а вот 27 - я думаю надо определить как врага (в моем случае).


 
Anatoly Podgoretsky ©   (2004-08-15 13:07) [19]

Не забудь тогда об конце файла, это для текстовых файлах нормальный символ. Всех врагов выбирай из дивпазона 0..31


 
Anatoly Podgoretsky ©   (2004-08-15 13:15) [20]

Я иы оставил Bel, BS, Tab, LF, FF, CR, EOF


 
GrayFace ©   (2004-08-15 13:44) [21]

Anatoly Podgoretsky ©   (15.08.04 13:15) [20]
Как вы умудрились нажать "и" вместо "б" - они же далеко друг от друга?? :)


 
Anatoly Podgoretsky ©   (2004-08-15 13:59) [22]

Офтопи, уметь надо, не каждому дано :-)


 
GuAV ©   (2004-08-15 20:32) [23]


> Я иы оставил Bel, BS, Tab, LF, FF, CR, EOF

+ #26, если в конце файла?


 
SPeller ©   (2004-08-16 07:52) [24]

Всем большое спасибо за участие, буду делать потихоньку.


 
КаПиБаРа ©   (2004-08-16 08:51) [25]

Можно сделать эвристический анализ на основе "спектрограммы" (процентного состава различных групп байтов) файла.


 
Anatoly Podgoretsky ©   (2004-08-16 08:52) [26]

GuAV ©   (15.08.04 20:32) [23]
Вопрос спорный, по определению EOF может быть в любом месте, все коды после него должны игнорироваться, точнее прекращаться обработка файла. Не относится к двоичным файлам.
Escape и следующее за ним, же по определению не относится к текстовым, поскольку этот символ как раз и говорит, что последуюшее не является текстом, а является управляющей (двоичной) последовательностью. Хотя при желании можно ввести ограничение, что EOF не может встречаться в середине файла, но лучше так не делать.


 
Anatoly Podgoretsky ©   (2004-08-16 08:54) [27]

КаПиБаРа ©   (16.08.04 08:51) [25]
Зачем? Я конечно точно не знаю его задачи, но явно достаточно сканировать файл до первого непечатного символа, исключая разрешеные управляющие.


 
КаПиБаРа ©   (2004-08-16 12:17) [28]


> Anatoly Podgoretsky ©   (16.08.04 08:54) [27]

Понимаете, Анатолий, некоторым не дает покоя мысль что продукт можно сделать оригинельнее, лучше. Другие же боятся пальцем пошевелить. Первые достигают успеха, вторые же так и остаются на втором плане.


 
panov ©   (2004-08-16 13:35) [29]

Под текстовым файлом в компьютерном деле понимается файл, содержащий только буквы и знаки препинания, как правило, имеющий строчную структуру, где строки отделяются друг от друга специальными кодами (для DOS и Windows это 13 и 10).
Если в файле кроме собственно текста содержатся какие-то указания на то, как он должен выглядеть на печати (шрифты, способ выравнивания абзацев), то это уже не текст. Это документ.


 
panov ©   (2004-08-16 13:36) [30]

т.е. документ, в котором имеется псевдографика, не является текстовым.


 
Anatoly Podgoretsky ©   (2004-08-16 13:42) [31]

panov ©   (16.08.04 13:36) [30]
Символы псевдографики входят в стандартный набор ASCII Extended как печатные и принтера, дисплеи их поддерживают напрямую.
Но это так между делом.

А по сути автор должен сам определить что он считает допустимыми символами, а что нет и уже от этой позиции действовать. Естественно для разных кодировок этот набор правил может различаться. В Виндоус нет псевдографики, но теже самые позиции в кодовой странице считаются печатными.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.032 c
4-1089877699
banderas
2004-07-15 11:48
2004.08.29
Как сделать что бы запускался почтовый клиент по умолчанию


3-1091693682
Sirruf
2004-08-05 12:14
2004.08.29
BLOB-поля по-простому


14-1091910277
Алекс_
2004-08-08 00:24
2004.08.29
Где бы скачать новые компоненты FastNet?


4-1090088380
parovoZZ
2004-07-17 22:19
2004.08.29
Картинки *.PNG


14-1092026321
Vlad Oshin
2004-08-09 08:38
2004.08.29
Опрос о курении.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский