7 votes

Texte étendu ASCII non ISO

Quand j'ai essayé de connaître l'encodage du fichier all.txt en utilisant

$ file all.txt

il affiche ce message

all.txt: texte ASCII étendu non-ISO, avec des lignes très longues

quel est ce type d'encodage texte ASCII étendu non-ISO?

car j'ai besoin de le convertir en un autre encodage donc j'ai besoin de connaître l'encodage de ce fichier

une aide?

9voto

Sairam Points 775

C'est quelque chose qui ne ressemble ni à utf-8 ni à iso-8859-1. Ça pourrait être n'importe quoi d'autre. Ça pourrait même ne pas être un texte du tout. Ce type est une sorte de description de secours pour tout ce qui ne contient pas d'octets nuls.

Même s'il s'agit en réalité d'un fichier texte (l'extension suggère que c'est le cas), il n'y a malheureusement aucun moyen automatique de découvrir l'encodage, car la plupart des encodages ont la même plage de codes valides. L'utf-8 peut être distingué avec une très grande confiance, mais au-delà, il nécessite une vérification manuelle.

Tout d'abord, vous devez déterminer dans quelle langue se trouve le fichier pour avoir une idée du contenu correct et du contenu corrompu, ainsi qu'une liste des encodages possibles. Car il existe des milliards d'encodages, mais seulement quelques-uns ont été utilisés pour une langue particulière.

Ensuite, vous devez essayer de convertir le fichier à partir de chaque encodage possible, et pour chaque conversion qui réussit techniquement (ce qui malheureusement sera la plup des cas), visualisez le résultat et vérifiez s'il est correct ou non.

Un correcteur orthographique peut vous aider lors de la révision, car des conversions incorrectes entraîneront plus d'erreurs de vérification orthographique.

Pour la conversion, vous pouvez utiliser iconv(1), qui est installé à partir du paquet libc sur GNU/Linux ou recode. recode a plus d'options et une meilleure gestion des erreurs.

8voto

ckujau Points 593

Ce ne rentrera pas dans un commentaire, alors voici : j'avais moi aussi un fichier étrange entre les mains :

$ file systeminfo.txt 
systeminfo.txt : texte ASCII étendu non-ISO

Je savais que cela avait été généré par une installation allemande de WindowsXP et contenait des umlauts mais iconv n'était pas capable de le convertir en quelque chose de sensé :

$ iconv -t UTF-8 systeminfo.txt > systeminfo\_utf8.txt 
iconv: séquence d'entrée illégale à la position 308

Mais comme iconv connaît tellement de codages, j'ai utilisé une approche par la force brute pour trouver un codage source fonctionnel :

$ iconv --list | sed 's/\\/\\/$//' | sort > encodings.list
$ for a in \`cat encodings.list\`; do
  printf "$a  "
  iconv -f $a -t UTF-8 systeminfo.txt > /dev/null 2>&1 \\
    && echo "ok : $a" || echo "échec : $a"
done | tee result.txt

Ensuite, je passerais en revue result.txt et je chercherais le codage qui n'a pas échoué. Dans mon cas, -f CP850 -t UTF-8 a très bien fonctionné, et les umlauts sont toujours là, mais maintenant encodés en UTF-8 :-)

1voto

Abhinav Points 2633

J'ai raccourci le script de ckujau comme suit :

#!/bin/bash
iconv --list | sed -e 's/\/\///g' | while read encoding
do
    transcoded=$(head -n1 strange-encoding.txt | iconv -sc -f $encoding -t UTF-8)
    echo "$encoding $transcoded"
done

Donc, lorsque j'ai un fichier avec un encodage de caractères inconnu :

$ cat strange-encoding.txt 
Brbel

et je m'attends à ce que ce soit le prénom féminin allemand "Bärbel", je peux trouver tous les encodages correspondants avec

$ ./check_encodings.sh | grep "Bärbel"
437 Bärbel
850 Bärbel
851 Bärbel
852 Bärbel
857 Bärbel
861 Bärbel
865 Bärbel
CP-HU Bärbel
CP437 Bärbel
CP770 Bärbel
CP773 Bärbel
CP774 Bärbel
CP775 Bärbel
CP850 Bärbel
CP851 Bärbel
CP852 Bärbel
CP857 Bärbel
CP861 Bärbel
CP865 Bärbel
CPIBM861 Bärbel
CSIBM851 Bärbel
CSIBM857 Bärbel
CSIBM865 Bärbel
CSPC8CODEPAGE437 Bärbel
CSPC775BALTIC Bärbel
CSPC850MULTILINGUAL Bärbel
CSPCP852 Bärbel
CWI-2 Bärbel
CWI Bärbel
IBM437 Bärbel
IBM775 Bärbel
IBM850 Bärbel
IBM851 Bärbel
IBM852 Bärbel
IBM857 Bärbel
IBM861 Bärbel
IBM865 Bärbel
OSF100201B5 Bärbel

Merci à ckujau!

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X