Le Bloc-Note gère l'UTF-8 mais attention, il ne faut pas enregistrer son fichier avec, si il détecte un fichier XML UTF8, si tu le modifie et que tu l'enregistre, il va bien conserver l'encodage mais rajoute un BOM ce qui peu provoquer de mauvaise surprise !
Sinon, la Règle du Decode\Encode n'est pas absolue, c'est à toi, de bien savoir dans chacun des Flux quel est le type de l'encodage !
Il existe des fonctions pour déterminer l'encodage (sans le BOM) par une analyse statistique des combinaisons de Byte dans le fichier (comme NotePad le fait)
Mais il est vrai que tu as enoncé l'inverse comme le fait remarquer AndNotOr
Comme par défaut Delphi 6/7 est ANSI (Windows-1252 plus exactement), c'est UTF8Decode pour lire des données extérieures, et UTF8Encode pour les écrire ...
veille que ton entête précise l'encodage !
Normalement, avec un XML et TXMLDocument, tu n'as pas à te préoccuper de l'encodage, il va traduire lui même tout en UniCode (type du WideString sous D6/D7)
<?ml version="1.0" encoding="UTF-8"...
UTF8Encode\Decode doit être utilisé si tu lit le fichier manuellement via TFileStream, ReadBlock, ...
Partager