J'aimerais savoir comment détecter si un fichier est binaire
ou pas. Mais actuellement je ne vois pas trop comment m'y prendre.
Si quelqu'un a une idée...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fabien LE LEZ
On Wed, 08 Feb 2006 18:01:36 +0100, dagecko :
J'aimerais savoir comment détecter si un fichier est binaire ou pas.
Si tu cherches un algorithme, cf fr.comp.algorithmes. Tu peux aussi jeter un coup d'oeil sur les sources (ou le manuel) de file : <ftp://ftp.astron.com/pub/file>.
On Wed, 08 Feb 2006 18:01:36 +0100, dagecko <dagecko@free.fr>:
J'aimerais savoir comment détecter si un fichier est binaire
ou pas.
Si tu cherches un algorithme, cf fr.comp.algorithmes.
Tu peux aussi jeter un coup d'oeil sur les sources (ou le manuel) de
file : <ftp://ftp.astron.com/pub/file>.
J'aimerais savoir comment détecter si un fichier est binaire ou pas.
Si tu cherches un algorithme, cf fr.comp.algorithmes. Tu peux aussi jeter un coup d'oeil sur les sources (ou le manuel) de file : <ftp://ftp.astron.com/pub/file>.
dagecko
Le Wed, 08 Feb 2006 19:18:10 +0100, Fabien LE LEZ a écrit :
On Wed, 08 Feb 2006 18:01:36 +0100, dagecko :
J'aimerais savoir comment détecter si un fichier est binaire ou pas.
Si tu cherches un algorithme, cf fr.comp.algorithmes. Tu peux aussi jeter un coup d'oeil sur les sources (ou le manuel) de file : <ftp://ftp.astron.com/pub/file>.
Merci, ça va m'aider je pense.
Le Wed, 08 Feb 2006 19:18:10 +0100, Fabien LE LEZ a écrit :
On Wed, 08 Feb 2006 18:01:36 +0100, dagecko <dagecko@free.fr>:
J'aimerais savoir comment détecter si un fichier est binaire
ou pas.
Si tu cherches un algorithme, cf fr.comp.algorithmes.
Tu peux aussi jeter un coup d'oeil sur les sources (ou le manuel) de
file : <ftp://ftp.astron.com/pub/file>.
Le Wed, 08 Feb 2006 19:18:10 +0100, Fabien LE LEZ a écrit :
On Wed, 08 Feb 2006 18:01:36 +0100, dagecko :
J'aimerais savoir comment détecter si un fichier est binaire ou pas.
Si tu cherches un algorithme, cf fr.comp.algorithmes. Tu peux aussi jeter un coup d'oeil sur les sources (ou le manuel) de file : <ftp://ftp.astron.com/pub/file>.
Merci, ça va m'aider je pense.
kanze
dagecko wrote:
J'aimerais savoir comment détecter si un fichier est binaire ou pas. Mais actuellement je ne vois pas trop comment m'y prendre. Si quelqu'un a une idée...
Strictement parlant, c'est impossible. Si j'écris les quatres entiers 0538976328, 1701604463, 0740325231, 1919706122 en binaire sur ma machine (grand-boutienne), le résultat serait indistinguable de si j'avais écrit " Hello, worldn" en texte. Comment veux-tu qu'un programme qui n'a accès qu'un contenu du fichier puisse déviner qu'il s'agit en fait de quatre entiers en binaire ?
Ayant dit celà, on peut arriver à des heuristiques qui ne se trompent pas trop. Donc, par exemple, si tu lis les 512 premiers octets, et il sont tous ou dans l'intervalle 0x20-0x7E, ou 0x0A, 0x09 ou 0x0D, la probabilité qu'il s'agit du texte est très forte. En revanche, des suites étendues (plus de quatre octets, en tout cas) des octets strictement inférieur à 0x20, autre que dans l'intervale 0x09-0x0D, est proablement binaire (à moins d'être une suite de caractères accentués est-européens en UTF-16).
Note que la présence des encodages divers rend le problème plus difficile. Sous Unix, il y avait (et il y en a encore, je crois) une tradition de commencer des fichiers binaires par des octets « magiques » qui signaler le type. En choisissant des valeurs qui n'apparaîtrait pas dans un fichier de texte. Donc, sur le premier Unix où j'ai travaillé, un fichier objet commençait toujours avec les deux octets 0x01, 0x03. En ASCII, pas de problème, mais dans un fichier en UTF-16BE, ça correspond à un a minuscule avec un accent brève. (Heureusement que la probabilité qu'un texte commence précisement avec ce caractère est assez faible.)
Enfin, je ne négligerais pas les conventions de nommage non plus. Si le nom du fichier termine par .o ou .a (ou .obj, .exe ou .lib sous Windows), on n'a typiquement pas besoin d'aller plus loin pour considérer que c'est du binaire. Mais il faut y aller avec des pincettes : si un fichier dont le nom se termine en .xls est prèsque sûrement Excel (et donc binaire), je n'exclurais pas que quelqu'un nom ses fichiers de documentation text en .doc.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
dagecko wrote:
J'aimerais savoir comment détecter si un fichier est binaire
ou pas. Mais actuellement je ne vois pas trop comment m'y
prendre. Si quelqu'un a une idée...
Strictement parlant, c'est impossible. Si j'écris les quatres
entiers 0538976328, 1701604463, 0740325231, 1919706122 en
binaire sur ma machine (grand-boutienne), le résultat serait
indistinguable de si j'avais écrit " Hello, worldn" en texte.
Comment veux-tu qu'un programme qui n'a accès qu'un contenu du
fichier puisse déviner qu'il s'agit en fait de quatre entiers en
binaire ?
Ayant dit celà, on peut arriver à des heuristiques qui ne se
trompent pas trop. Donc, par exemple, si tu lis les 512 premiers
octets, et il sont tous ou dans l'intervalle 0x20-0x7E, ou 0x0A,
0x09 ou 0x0D, la probabilité qu'il s'agit du texte est très
forte. En revanche, des suites étendues (plus de quatre octets,
en tout cas) des octets strictement inférieur à 0x20, autre que
dans l'intervale 0x09-0x0D, est proablement binaire (à moins
d'être une suite de caractères accentués est-européens en
UTF-16).
Note que la présence des encodages divers rend le problème plus
difficile. Sous Unix, il y avait (et il y en a encore, je crois)
une tradition de commencer des fichiers binaires par des octets
« magiques » qui signaler le type. En choisissant des valeurs
qui n'apparaîtrait pas dans un fichier de texte. Donc, sur le
premier Unix où j'ai travaillé, un fichier objet commençait
toujours avec les deux octets 0x01, 0x03. En ASCII, pas de
problème, mais dans un fichier en UTF-16BE, ça correspond à un
a minuscule avec un accent brève. (Heureusement que la
probabilité qu'un texte commence précisement avec ce caractère
est assez faible.)
Enfin, je ne négligerais pas les conventions de nommage non
plus. Si le nom du fichier termine par .o ou .a (ou .obj, .exe
ou .lib sous Windows), on n'a typiquement pas besoin d'aller
plus loin pour considérer que c'est du binaire. Mais il faut y
aller avec des pincettes : si un fichier dont le nom se termine
en .xls est prèsque sûrement Excel (et donc binaire), je
n'exclurais pas que quelqu'un nom ses fichiers de documentation
text en .doc.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
J'aimerais savoir comment détecter si un fichier est binaire ou pas. Mais actuellement je ne vois pas trop comment m'y prendre. Si quelqu'un a une idée...
Strictement parlant, c'est impossible. Si j'écris les quatres entiers 0538976328, 1701604463, 0740325231, 1919706122 en binaire sur ma machine (grand-boutienne), le résultat serait indistinguable de si j'avais écrit " Hello, worldn" en texte. Comment veux-tu qu'un programme qui n'a accès qu'un contenu du fichier puisse déviner qu'il s'agit en fait de quatre entiers en binaire ?
Ayant dit celà, on peut arriver à des heuristiques qui ne se trompent pas trop. Donc, par exemple, si tu lis les 512 premiers octets, et il sont tous ou dans l'intervalle 0x20-0x7E, ou 0x0A, 0x09 ou 0x0D, la probabilité qu'il s'agit du texte est très forte. En revanche, des suites étendues (plus de quatre octets, en tout cas) des octets strictement inférieur à 0x20, autre que dans l'intervale 0x09-0x0D, est proablement binaire (à moins d'être une suite de caractères accentués est-européens en UTF-16).
Note que la présence des encodages divers rend le problème plus difficile. Sous Unix, il y avait (et il y en a encore, je crois) une tradition de commencer des fichiers binaires par des octets « magiques » qui signaler le type. En choisissant des valeurs qui n'apparaîtrait pas dans un fichier de texte. Donc, sur le premier Unix où j'ai travaillé, un fichier objet commençait toujours avec les deux octets 0x01, 0x03. En ASCII, pas de problème, mais dans un fichier en UTF-16BE, ça correspond à un a minuscule avec un accent brève. (Heureusement que la probabilité qu'un texte commence précisement avec ce caractère est assez faible.)
Enfin, je ne négligerais pas les conventions de nommage non plus. Si le nom du fichier termine par .o ou .a (ou .obj, .exe ou .lib sous Windows), on n'a typiquement pas besoin d'aller plus loin pour considérer que c'est du binaire. Mais il faut y aller avec des pincettes : si un fichier dont le nom se termine en .xls est prèsque sûrement Excel (et donc binaire), je n'exclurais pas que quelqu'un nom ses fichiers de documentation text en .doc.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Ploc
dagecko wrote:
Bonjour
J'aimerais savoir comment détecter si un fichier est binaire ou pas. Mais actuellement je ne vois pas trop comment m'y prendre. Si quelqu'un a une idée...
merci.
le commande "file" sous linux fait ca tres bien. Il n'y a qu'a regarder le code pour s'en inspirer, mais c'est OT ici.
dagecko wrote:
Bonjour
J'aimerais savoir comment détecter si un fichier est binaire
ou pas. Mais actuellement je ne vois pas trop comment m'y prendre.
Si quelqu'un a une idée...
merci.
le commande "file" sous linux fait ca tres bien.
Il n'y a qu'a regarder le code pour s'en inspirer, mais c'est OT ici.
J'aimerais savoir comment détecter si un fichier est binaire ou pas. Mais actuellement je ne vois pas trop comment m'y prendre. Si quelqu'un a une idée...
merci.
le commande "file" sous linux fait ca tres bien. Il n'y a qu'a regarder le code pour s'en inspirer, mais c'est OT ici.
Fabien LE LEZ
On 9 Feb 2006 01:35:16 -0800, "kanze" :
je n'exclurais pas que quelqu'un nom ses fichiers de documentation text en .doc.
Et je confirme que j'ai vu énormément de fichiers textes d'extension .doc. Surtoutà l'époque du DOS, mais on en trouve encore quelques-uns.
On 9 Feb 2006 01:35:16 -0800, "kanze" <kanze@gabi-soft.fr>:
je
n'exclurais pas que quelqu'un nom ses fichiers de documentation
text en .doc.
Et je confirme que j'ai vu énormément de fichiers textes d'extension
.doc. Surtoutà l'époque du DOS, mais on en trouve encore quelques-uns.
Le Thu, 09 Feb 2006 16:08:27 +0100, Fabien LE LEZ a écrit :
On 9 Feb 2006 01:35:16 -0800, "kanze" :
je n'exclurais pas que quelqu'un nom ses fichiers de documentation text en .doc.
Et je confirme que j'ai vu énormément de fichiers textes d'extension .doc. Surtoutà l'époque du DOS, mais on en trouve encore quelques-uns.
Je ne tiens pas à me baser sur les extensions.
kanze
Ploc wrote:
dagecko wrote:
J'aimerais savoir comment détecter si un fichier est binaire ou pas. Mais actuellement je ne vois pas trop comment m'y prendre. Si quelqu'un a une idée...
le commande "file" sous linux fait ca tres bien.
La commande "file" sous Unix fait beaucoup plus. Et se trompe souvent.
Il n'y a qu'a regarder le code pour s'en inspirer, mais c'est OT ici.
La commande "file" est beaucoup plus complexe que ce qu'il lui faut. Elle se base en partie sur un fichier qui décrit des clés à chercher pour chaque type de fichier. Elle se sert aussi d'un certain nombre d'heuristiques, surtout sur des fichiers ASCII.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Ploc wrote:
dagecko wrote:
J'aimerais savoir comment détecter si un fichier est binaire
ou pas. Mais actuellement je ne vois pas trop comment m'y
prendre. Si quelqu'un a une idée...
le commande "file" sous linux fait ca tres bien.
La commande "file" sous Unix fait beaucoup plus. Et se trompe
souvent.
Il n'y a qu'a regarder le code pour s'en inspirer, mais c'est
OT ici.
La commande "file" est beaucoup plus complexe que ce qu'il lui
faut. Elle se base en partie sur un fichier qui décrit des clés
à chercher pour chaque type de fichier. Elle se sert aussi d'un
certain nombre d'heuristiques, surtout sur des fichiers ASCII.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
J'aimerais savoir comment détecter si un fichier est binaire ou pas. Mais actuellement je ne vois pas trop comment m'y prendre. Si quelqu'un a une idée...
le commande "file" sous linux fait ca tres bien.
La commande "file" sous Unix fait beaucoup plus. Et se trompe souvent.
Il n'y a qu'a regarder le code pour s'en inspirer, mais c'est OT ici.
La commande "file" est beaucoup plus complexe que ce qu'il lui faut. Elle se base en partie sur un fichier qui décrit des clés à chercher pour chaque type de fichier. Elle se sert aussi d'un certain nombre d'heuristiques, surtout sur des fichiers ASCII.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34