Форум: "Основная";
Текущий архив: 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]
> ☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ - они могут быть в текстовом файле или
> нет?
Это в большинстве юникодные символы, их нет в 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