J'ai eu quelques problèmes avec les fichiers de sous-titres dans video omxplayer. Pour le résoudre, j'ai dû convertir le codage Windows-1250 en UTF-8. Ma question est, comment puis-je voir pour un fichier spécifique quel encodage est utilisé?
23
piconv
pour changer l'encodage;)Réponses:
Vous ne pouvez pas vraiment savoir automatiquement si un fichier a été écrit avec l'encodage X à l'origine.
Cependant, vous pouvez facilement vérifier si le fichier complet peut être décodé avec succès (mais pas nécessairement correctement) à l'aide d'un codec spécifique. Si vous trouvez des octets qui ne sont pas valides pour un encodage donné, ce doit être autre chose.
Le problème est que de nombreux codecs sont similaires et ont les mêmes "modèles d'octets valides", les interprétant simplement comme des caractères différents. Par exemple, un
ä
codage dans un peut correspondre àé
un autre ouø
à un troisième. L'ordinateur ne peut pas vraiment détecter de quelle manière interpréter l'octet donne un texte correctement lisible par l'homme (sauf peut-être si vous ajoutez un dictionnaire pour toutes sortes de langues et le laissez effectuer des vérifications orthographiques ...). Vous devez également savoir que certains jeux de caractères sont en fait des sous-ensembles d'autres, comme par exemple le codage ASCII fait partie des codecs les plus couramment utilisés comme certains de la famille ANSI ou UTF-8. Cela signifie par exemple un texte enregistré en UTF-8 qui ne contient que des caractères latins simples, il serait identique au même fichier enregistré en ASCII.Cependant, revenons d'expliquer ce que vous ne pouvez pas faire à ce que vous pouvez réellement faire:
Pour une vérification de base des fichiers texte ASCII / non ASCII (normalement UTF-8), vous pouvez utiliser la
file
commande. Cependant, il ne connaît pas beaucoup de codecs et il n'examine que les premiers Ko d'un fichier, en supposant que le reste ne contiendra pas de nouveaux caractères. D'un autre côté, il reconnaît également d'autres types de fichiers courants comme divers scripts, des documents HTML / XML et de nombreux formats de données binaires (ce qui n'est cependant pas intéressant pour comparer des fichiers texte) et il peut imprimer des informations supplémentaires s'il y a des lignes extrêmement longues ou quoi le type de séquence de nouvelle ligne (par exemple UNIX: LF, Windows: CR + LF) est utilisé.Si cela ne suffit pas, je peux vous proposer ici le script Python que j'ai écrit pour cette réponse , qui scanne les fichiers complets et essaie de les décoder en utilisant un jeu de caractères spécifié. S'il réussit, ce codage est un candidat potentiel. Sinon, s'il y a des octets qui ne peuvent pas être décodés avec, vous pouvez supprimer ce jeu de caractères de votre liste.
la source
Un programme nommé
file
peut le faire. Exemple:Si vous êtes intéressé par la façon dont cela se fait, voyez
src/encoding.c
.la source
file
fait une supposition, et souvent ce n'est pas très bon. Par exemple, lors de mes tests, MacRoman et CP-1252 ont été mal identifiés comme ISO-8859, avec pour résultat que "š" et "ß" ont été brouillés..sql
fichier etfile
j'ai montré qu'il s'agissait bien d'ungzip
fichier compressé!