5 votes

comment déterminer l'encodage du texte

Je sais que le fichier UTF dispose d'une BOM pour déterminer l'encodage mais qu'en est-il des autres encodages qui disposent de pas d'indice pour deviner cet encodage.

Je suis un nouveau programmeur Java. J'ai écrit un code pour deviner l'encodage UTF en utilisant le BOM UTF. Mais j'ai un problème avec les autres encodages. Comment puis-je les deviner ?

Quelqu'un peut m'aider ? Merci d'avance.

4voto

Todd Owen Points 4477

Cette question est un doublon de plusieurs précédent ceux . Il existe au moins deux bibliothèques pour Java qui tentent de deviner l'encodage (bien qu'il faille garder à l'esprit qu'il n'existe aucun moyen de deviner correctement 100 % du temps).

Bien sûr, si vous savez que le codage ne sera qu'une des trois ou quatre options possibles, vous pourrez peut-être écrire un algorithme de devinette plus précis.

0voto

Álvaro G. Vicario Points 57607

La réponse courte est : vous ne pouvez pas.

Même en UTF-8, le BOM est entièrement facultatif et il est souvent recommandé de ne pas l'utiliser car de nombreuses applications ne le gèrent pas correctement et l'affichent simplement comme s'il s'agissait d'un caractère imprimable. L'objectif initial des marqueurs d'ordre d'octet était d'indiquer l'endiannité des fichiers UTF-16.

Cela dit, la plupart des applications qui gèrent Unicode mettent en œuvre une sorte d'algorithme de devinette. Lisez le début du fichier et recherchez certaines signatures.

0voto

Hendrik Points 962

Si vous ne connaissez pas l'encodage et ne disposez d'aucun indicateur (comme une nomenclature), il n'est pas toujours possible de "deviner" l'encodage avec précision. Il existe des pointeurs qui peuvent vous donner des indices.

Par exemple, un fichier ISO-8859-1 n'aura (généralement) pas de caractères 0x00, alors qu'un fichier UTF-16 en aura beaucoup.

La solution la plus courante consiste à laisser l'utilisateur choisir l'encodage si vous ne pouvez pas le détecter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X