Bonjour à tous

Je suis en train de développer un utilitaire qui manipule des fichiers xml en utilisant un TXMLDocument et j'ai un soucis d'encodage.
Dans mon fichier xml en entête j'ai ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<?xml version="1.0" encoding="UTF-8"?>
Malheureusement je ne peux pas utiliser la fonction LoadFromFile() car il y a dans ce fichier des syntaxes XML qui sont rejeté par TXMLDocument du coup je suis obligé de faire comme ceci pour lire mon fichier

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
 
procedure TcotcotFrm.fic2XML(nomfic: string; var docx: TXMLDocument);
var
  d: integer;
  ligne: String;
  fic: Text;
begin
  docx.Active := false;
  docx.Xml.Clear;
  AssignFile(fic, nomfic);
  reset(fic);
  while not(eof(fic)) do
  begin
    readln(fic, ligne);    
    d := pos('<!DOCTYPE', ligne);//ligne posant problème
    if (d = 0) and (ligne <> '') then
      docx.Xml.Add(ligne);
  end;
  closefile(fic);
  docx.Active := true;
end;
Et malgré le fait que l'encodage soit précisé, j'ai des bizarreries dès que j'ai des accents et même des fois sur des caractères qui ne devrait pas poser de problème comme le caractère espace qui devient "Â " au lieu de " "

J'ai aussi essayé de faire ça pour la lecture
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
 
procedure TcotcotFrm.fic2XML(nomfic: string; var docx: TXMLDocument);
var
  i,d: integer;
  lignes: TStringList;
 
begin
  docx.Active := false;
  docx.Xml.Clear;
  lignes:=TStringList.Create;
  lignes.LoadFromFile(nomfic,TEncoding.UTF8);
  for i:=0 to lignes.Count-1 do
  begin
 
    d := pos('<!DOCTYPE', lignes[i]);
    if (d = 0) and (lignes[i]<> '') then
      docx.Xml.Add(lignes[i]);
  end;
 
  docx.Active := true;
end;
mais là j'ai l'exception suivante: EConvertError Declared encoding does not match byte order mark même si j'utilise LoadFromFile sans préciser l'encodage.
En fait ça ne fonctionne que si je supprime encoding="UTF-8" de l'entête xml. Mais si je fait ça j'ai mes bizarreries

Du coup je me demandais s'il y avait un moyen de vérifier que mon fichier est bien en utf8 et si non comment corriger les problèmes