- Je me demandais si certains fichiers texte stockent leur méthode de codage le long de leur contenu texte pour un décodage ultérieur?
- Ou est-ce le travail de la visionneuse de texte de deviner la méthode de codage pour un fichier texte donné, et la supposition peut ne pas toujours être correcte? Si oui, comment un lecteur de texte le devine-t-il?
19
Réponses:
La réponse de Mark Szymanski est correcte - il n'y a pas d'informations de codage explicites dans un fichier texte brut - c'est la définition de "fichier texte brut", le "clair" se réfère au fait qu'il n'y a pas de métadonnées dans le fichier.
Cependant, certaines applications placent une marque d'ordre des octets (BOM) dans les fichiers texte encodés en UTF-16 ou UTF-32 / UCS-4. La nomenclature n'est pas vraiment destinée à indiquer l'encodage (elle indique l'ordre des octets, comme son nom l'indique), mais de nombreuses applications utiliseront la présence de la nomenclature pour reconnaître UTF-16 / UTF-32, elle sert donc d'indicateur de codage.
Oui, la visionneuse de texte ne peut que deviner. Il utilise généralement des heuristiques:
vim
fonctionne par défaut: Il essaiera d'abord d'utiliser UTF-8 lors de la lecture d'un fichier; si cela échoue, il retombe à ISO-8859-1.Dans la plupart des cas, un programme doit être explicitement informé de l'encodage d'un fichier texte, sinon il ne pourra pas le lire correctement.
la source
file -bi
marche si la nomenclature n'est pas utilisée?file
possède diverses heuristiques pour déterminer le type de fichier et l'encodage. Généralement, il recherche certaines chaînes ou séquences d'octets dans le fichier. Si vous souhaitez des informations plus spécifiques, vous devrez probablement lire la source. Ou posez simplement une question distincte :-).file
ne peut pas détecter de manière fiable la plupart des encodages de texte (car c'est très difficile). La page de manuel contient des informations sur la détection des jeux de caractères - lafile
plupart du temps, elle ne reconnaît que ASCII, UTF-8/16, EBCDIC et ISO-8859-x. Par exemple, un fichier codé en KOI8-R est signalé comme "ISO-8859-1".Les fichiers en texte brut ne stockent aucune information sur leur encodage. Une visionneuse le détermine en fonction du codage de caractères que vous lui avez défini. Il ne peut pas le déterminer par lui-même, car c'est la même chose pour l'ordinateur.
la source
less
etgrep
sur Unix / Linux, faites cela).