Pourquoi devrions-nous faire la distinction entre les fichiers texte et les fichiers binaires lors de leur transmission? Pourquoi certains canaux sont-ils conçus uniquement pour les données textuelles? Au niveau inférieur, ce sont tous des bits.
Au niveau inférieur, ce sont tous des bits ... vrais. Cependant, certains canaux de transmission ont sept bits par octet et d'autres canaux de transmission ont huit bits par octet. Si vous transmettez ASCII texte sur un canal de sept bits, alors tout va bien. Les données binaires sont altérées.
De plus, différents systèmes utilisent des conventions différentes pour les fins de ligne: LF et CRLF sont courants, mais certains systèmes utilisent CR ou NEL. Un mode de transmission de texte convertira automatiquement les fins de ligne, ce qui endommagera les fichiers binaires.
Cependant, tout cela est surtout d'intérêt historique de nos jours. La plupart des canaux de transmission sont à huit bits (tels que HTTP) et la plupart des utilisateurs sont d'accord avec la fin de ligne qu'ils obtiennent.
Quelques exemples de canaux 7 bits: SMTP (nominalement, sans extensions), SMS, Telnet, quelques connexions série. Internet n'a pas toujours été construit sur TCP/IP, et ça se voit.
De plus, la spécification HTTP indique que,
Lorsqu'ils sont sous forme canonique, les sous-types de média de type "texte" utilisent CRLF comme saut de ligne de texte. HTTP assouplit cette exigence et permet le transport de supports de texte avec CR simple ou LF seul représentant un saut de ligne lorsqu'il est effectué de manière cohérente pour un corps d'entité entier.
Tous les fichiers sont enregistrés dans l'un des deux formats de fichier - binaire ou texte. Les deux types de fichiers peuvent sembler identiques en surface, mais leurs structures internes sont différentes.
Alors que les fichiers binaires et texte contiennent des données stockées sous forme d'une série de (bits (valeurs binaires de 1 et 0)), les bits des fichiers texte représentent des caractères, tandis que les bits des fichiers binaires représentent des données personnalisées.
La distinction entre les deux est importante car différents systèmes d'exploitation traitent les fichiers texte différemment. Par exemple, dans * nix, vous terminez vos lignes avec juste \n
lorsque vous utilisez MS OS, vous utilisez \r\n
et sur Mac, vous utilisez \n\r
. Des logiciels tels que les clients FTP essaient de modifier les fins de ligne sur les fichiers texte pour correspondre au système d'exploitation de destination en ajoutant/supprimant les caractères. Il s'agit de s'assurer que le fichier texte apparaîtra correctement sur le système d'exploitation de destination.
par exemple, si vous créez un fichier texte dans * nix avec des sauts de ligne et essayez de le copier dans une boîte Windows sous forme de fichier binaire et de l'ouvrir dans le bloc-notes, vous ne verrez aucune des fins de ligne, mais juste un encombrement de texte .
Il est important d'ajouter aux réponses déjà fournies que les fichiers texte et les fichiers binaires représentent tous les deux des octets, mais les fichiers texte diffèrent des fichiers binaires en ce que les octets sont censés représenter des caractères. Le mappage des octets aux caractères est effectué de manière cohérente sur le fichier à l'aide d'une certaine page de code ou Unicode. Lorsque vous utilisez des pages de codes 7 ou 8 bits, vous pouvez faire tourner la molette lors de la lecture de ces fichiers et les interpréter avec un alphabet anglais, un alphabet allemand, un alphabet russe ou autres. Cette rotation du cadran n'affecte pas les octets, elle affecte les caractères choisis pour correspondre aux octets.
Comme d'autres l'ont dit, il y a aussi le problème du codage des séparateurs de saut de ligne qui est unique aux fichiers texte et qui peut différer d'une plateforme à l'autre. Le "saut de ligne" n'est pas une lettre de notre alphabet ou un symbole que vous pouvez écrire, donc d'autres règles s'appliquent à lui.
Avec les fichiers binaires, il n'y a pas de convention implicite sur le codage des caractères ou sur la définition d'une "ligne".