Bonjour tout le monde,
Pour savoir si un fichier texte a un entête UTF8, j'ai ça :
Je teste donc la présence des caractères "[" et ça marche, or dans le fichier je n'ai que les trois premiers caractères, après c'est le contenu, et il commence par un g.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private static Boolean IsUtf8(string path) { byte[] O = new byte[4]; using (FileStream SourceStream = File.Open(path, FileMode.Open)) { SourceStream.Seek(0, SeekOrigin.Begin); SourceStream.Read(O, 0, 4); } byte[] tref = new byte[] { (byte)0xEF, (byte)0xBB, (byte)0xBF, (byte)0x5B }; return O.SequenceEqual(tref); }
J'ai bien vu il n'y a pas longtemps une doc avec 3 caractères dans l'entête UTF 8, mais dans ma fonction c'est bien 4 caractères, pas vrai ?
Quelqu'un saurait-il me dire comment ça se fait que ça marche, alors que j'ai l'impression que ça ne devrait pas ?
Par ailleurs, quand il n'y a pas d'entête, le programme est supposé "deviner" l'encodage d'après le contenu texte du fichier. Mais ... On fait ça comment ?
Partager