Bonjour,
Je reçois des fichiers (txt ou dat) qui doivent être encodés en unicode. Parfois, certains fichiers sont encodés en ANSI et je ne dois pas les accepter.
Comment puis-je tester le type de codage d'un fichier ?
Bonjour,
Je reçois des fichiers (txt ou dat) qui doivent être encodés en unicode. Parfois, certains fichiers sont encodés en ANSI et je ne dois pas les accepter.
Comment puis-je tester le type de codage d'un fichier ?
J'ai finalement trouvé une solution qui vient plutôt du monde Delphi et qui consiste à utiliser la méthode read pour lire les deux premiers bytes de fichier. Il exist preut-être plus simple, mais en tous cas ça marche.
Encore faut-t-il en avoir le besoin ...
Si ça intéresse quelqu'un, je veux bien poster le code !
![]()
Bonjour,
Je suis intéressé par ton code, si ça ne t'ennuie pas.
Merci.
CCC
voici la fonction que j'utilise
Ca détecte beaucoup d'encodages unicodes, mais pas tous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Public Function SiBonUnicode(ByVal MyF As String) As Boolean Dim enc As System.Text.Encoding = Nothing Dim fic As System.IO.FileStream = New System.IO.FileStream(MyF, FileMode.Open, FileAccess.Read, FileShare.Read) Dim bom As Byte() = New Byte(3) {} If fic.CanSeek Then fic.Read(bom, 0, 4) 'si (0=239 and 1=187 and 2=191 ) or ( 0=255 and 1=254 ) or ( 0 =254 and 1=255 ) or ( 0=0 and 1= 0 and 2 =254 and 3 = 255 ) If (bom(0) = &HEF AndAlso bom(1) = &HBB AndAlso bom(2) = &HBF) OrElse (bom(0) = &HFF AndAlso bom(1) = &HFE) OrElse (bom(0) = &HFE AndAlso bom(1) = &HFF) OrElse (bom(0) = 0 AndAlso bom(1) = 0 AndAlso bom(2) = &HFE AndAlso bom(3) = &HFF) Then ' ucs-4 SiBonUnicode = True Else SiBonUnicode = False End If fic.Seek(0, System.IO.SeekOrigin.Begin) Else SiBonUnicode = False End If fic.Close() fic = Nothing End Functionj'ai en tous cas un cas ou ça ne détecte pas. Si le framework pouvait fournir une fonction SiUnicode, ce serait top.
Partager