none
Encodage RRS feed

  • Question

  • Bonjour tout le monde,

    je suis désolé d'arriver avec une question aussi basique, je ne sais pas quel encodage déclarer pour un fichier ANSI, qui encode 0xE8 pour un è, et 0xE0 pour un à.

    C'est un fichier qui a été créé sous Powershell avec l'encodage par défaut.

    J'ai essayé

    System.Text.Encoding.GetEncoding("1252") ;
    System.Text.Encoding.GetEncoding("850") ;
    System.Text.Encoding.GetEncoding("ISO8859-1") ;
    System.Text.Encoding.ASCII;

    et aucun ne m'affiche correctement ces deux caractères.

    Pourtant, si je regarde là

    https://en.wikipedia.org/wiki/Windows-1252

    ça semble bien confirmer mon premier élan d'utiliser 1252.

    En sortie je mets ça :

    System.Text.Encoding srcEncoding = System.Text.Encoding.GetEncoding("ISO8859-1") ;
    System.Text.Encoding tgtEncoding = System.Text.Encoding.UTF8;
    
    string[] allLines = File.ReadAllLines(strPath);
    
    string msg = allLines[allLines.Length - 2] + "\n" + allLines[allLines.Length - 1];
    
    string strSrc = msg; // String.Join("\n", lines);
    
    string notNullString = (strSrc+"").ToString();
    
    byte[] srcBytes = srcEncoding.GetBytes(notNullString);
    byte[] tgtBytes = System.Text.Encoding.Convert(srcEncoding, tgtEncoding, srcBytes);
    
    char[] tgtChars = new char[tgtEncoding.GetCharCount(tgtBytes, 0, tgtBytes.Length)];
    tgtEncoding.GetChars(tgtBytes, 0, tgtBytes.Length, tgtChars, 0);
    string tgtString = new string(tgtChars);
    
    MessageBox.Show(tgtString);

    Au préalable je me suis rendu compte que si je veux utiliser TakeLast(2) pour afficher les deux dernières lignes (ce qui il faut bien dire est plus élégant que ce que j'ai fait ci-dessus), il faut faire attention à la plateforme employée, entre C# Framework et C# Core, seul un des deux reconnaît la méthode.



    • Modifié Gloops dimanche 5 juin 2022 20:11
    dimanche 5 juin 2022 19:59

Réponses

Toutes les réponses

  • Ah non pardon, je croyais me tromper sur la conversion, en fait c'est à la lecture du fichier que j'ai oublié d'appliquer l'encodage.

    • Marqué comme réponse Gloops lundi 6 juin 2022 06:01
    lundi 6 juin 2022 06:01
  • Bonjour,

    Merci d'avoir partagé votre solution avec nous.

    Bonne journée.

    Cordialement,

    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    lundi 6 juin 2022 06:36
    Modérateur