Encoding.Default retourne la
page de code définie sur l'OS. Si quelqu'un change cette page, ou si les données sont partagées entre différentes machines qui utilisent différentes pages de code, le décodage ne fonctionnera pas. Si vous utilisez des langages latins vous ne vous en rendrez probablement pas compte, mais les problèmes apparaitront dès que vous commencerez à penser global : vous pourrez alors voir des bugs quelque peu étranges.
Puisque Encoding.Default peut changer selon la machine utilisée, les utilisateurs peuvent rencontrer des difficultés pour envoyer des fichiers ou parce que des fichiers sont corrompus. En réalité ils ne le sont pas, il s'agit juste d'une mauvaise utilisation d'Encoding pour les décoder.
Encoding.Default fournit une page de code "ANSI", qui ne supporte qu'une toute petite partie des caractères en Unicode, particulièrement pour les langues utilisation un simple byte comme celles utilisées aux US. Cela signifie que les utilisateurs peuvent entrer des caractères qui seront traduits par "?" ou qui causeront une exception.
Encoding.Default ne fournit aucune information à propos de l'encodage. Si vous l'utilisez, il est nécessaire d'implémenter une sorte de protocole de haut niveau pour déclarer explicitement quel est l'Encoding utilisé. Certains encodages comme UTF-8 ou UTF-16 permettent d'inclure un byte (
BOM) qui peut être utilisé comme une signature afin d'être certain de l'encodage à utiliser.
Partager