Sur Linux, vous pouvez essayer d'utiliser file(1) sur votre fichier d'entrée inconnue. La plupart du temps, il devinerait l'encodage correctement. Ou bien essayez plusieurs codages jusqu'à iconv
jusqu'à ce que vous "sentez" que le résultat est acceptable (par exemple si vous savez que le fichier est de la poésie russe, vous pouvez essayer KOI-8, UTF-8, etc .... jusqu'à ce que vous reconnaissez un bon poème russe). Mais character encoding est un cauchemar et peut être ambigu. Le fournisseur du fichier devrait vous dire quel encodage il a utilisé (et il n'y a aucun moyen d'obtenir ce codage de manière fiable et dans tous les cas: il y a quelques séquences d'octets qui seraient valides et interprétées différemment avec différents encodages).
(notez que le protocole HTTP mentionne et explicit l'encodage)
En 2017, mieux utiliser UTF-8 everywhere (et vous devriez suivre cette http://utf8everywhere.org/ lien) afin de demander à vos partenaires humains de vous envoyer UTF-8 (espérons-le la plupart de vos fichiers sont en UTF-8, car aujourd'hui ils devraient tous l'être).
(si l'encodage est plus une sociale question que technique)
Je reçois un fichier texte de format de codage aléatoire
Notez que « le codage aléatoire » ne pas exister. Vous voulez et devez savoir ce que character encoding (et file format) a été utilisé par le fournisseur de ce fichier (donc vous voulez dire "encodage inconnu", pas "aléatoire").
BTW, avez-vous une définition formelle, sans ambiguïté, le son et précise de text file, au-delà de fichier sans zéro octets, ou des fichiers avec quelques caractères de contrôle? LaTeX, C source, Markdown, SQL, UUencoding, shar, XPM, et HTML fichiers sont tous les fichiers texte, mais très différents!
Vous voulez probablement attendre le format UTF-8, et vous pourriez utiliser le file extension comme indice. Sachant le media-type pourrait aider.
(donc si HTTP a été utilisé pour transférer le fichier, il est important de garder (et la confiance) ... le Content-Type
, lire sur HTTP headers)
[...] alors incorrect le fichier est généré.
Comment savez-vous que le fichier résultant est incorrect? Vous pouvez seulement savoir si vous avez des attentes à propos de ce résultat (par exemple qu'il contient de la poésie russe, pas des caractères indésirables, mais peut-être ces caractères indésirables sont certains d'un interprète secret, ou de la musique représentée de façon bizarre, cryptée, etc. ...). Les fichiers bruts ne sont que des séquences d'octets, vous avez besoin de connaissances supplémentaires pour les utiliser (même si vous savez qu'ils utilisent UTF-8).
Veuillez améliorer votre question en en disant plus: Comment obtenez-vous ce fichier? De qui et d'où? Quel est ce fichier susceptible de contenir? –
fichier est placé dans un dossier d'entrée fixe. – dhpratik
Cela devrait aller dans la question (pas dans un commentaire). Mais * qui * a placé ce fichier? Demandez-lui quel encodage il a utilisé! "Codage aléatoire" n'existe pas (vous voulez dire que l'encodage vous est inconnu, et vous devriez faire ce qu'il faut pour trouver celui qui a été utilisé, ou bien ignorer ce fichier) –