Comme vous l'avez mentionné, vous devez connaître l'encodage du fichier pour pouvoir lire le code de l'utilisateur. encoding
attribut.
Cependant, il existe une heuristique qui peut facilement vous rapprocher suffisamment du "vrai" encodage pour vous permettre de lire l'attribut encodage. Cela fonctionne, car l'attribut <?xml
par définition, ne peut contenir que des caractères de la gamme ASCII (quel que soit leur codage).
La norme XML a même décrit le processus exact utilisé pour découvrir l'encodage .
Et l'étiquette d'encodage n'est pas non plus redondante. Par exemple, si vous utilisez l'algorithme de la spécification XML pour découvrir qu'un encodage basé sur l'ASCII (ou compatible avec l'ASCII) est utilisé vous toujours doivent lire l'encodage pour savoir lequel est réellement utilisé (les candidats valides seraient ASCII, UTF-8, n'importe lequel des codes d'encodage de l'UE). Les encodages ISO-8859-* , l'un des Windows-* codages, KOI8-R et beaucoup, beaucoup d'autres). Pour le <?xml
En soi, cela ne fera pas de différence, mais pour le reste du document, cela peut faire une énorme différence.
En ce qui concerne les fichiers XML mal étiquetés : oui, il est facile d'en produire, cependant La spécification XML spécifie clairement que ces fichiers sont mal formés et qu'en tant que tels, ils ne constituent pas un XML correct. Les encodages incorrects doivent être signalés comme une erreur (pour autant qu'ils puissent être détectés !). C'est donc le problème de celui qui produit le XML.