IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Caractères accentués récupérés depuis la console


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    281
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Par défaut Caractères accentués récupérés depuis la console
    Bonjour à tous,

    J'ai développé un petit programme en ligne de commande ( c# ) permettant d'envoyer des mail via SMTP.

    Tous les paramètres ( serveur smtp, objet,message,adresses) se passent en argument d'appel de mon programme ( avec argv[] ).

    Le soucis est que lorsque j'envoie un message avec des caractères accentués, ils sont mal retransmis.

    Je sais que cela vient du jeux de caractères employé par la console windows ( du moins je présume).

    Je pense donc qu'il faut utiliser un objet Encoding afin de "transcoder" mes arguments afin d'avoir les bon caractères.

    Je voudrais déja savoir si je suis sur la bonne voie et si c'est possible.

    Merci d'avance les amis

    Cordialement,

    Nixeus

  2. #2
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour,

    oui effectivement, c'est un jeu de codage, et je pense que la bonne pratique, c'est d'utiliser l'Unicode, en effet, il est géré sur tt les machines par défaut.
    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       Encoding e = Encoding.Unicode;
     
                byte[] encode;
     
                encode = e.GetBytes("Test chaîne accentée");
     
                Console.WriteLine(e.GetString(encode));
     
                Console.Read();
    ce code va afficher les accents ;-)

    bonne courage.

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    281
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Par défaut
    Je suis ton raisonnement Redouane.
    Le soucis c'est que quand je lis directement mes args[], j'ai déja des ùù au lieu des èè.

    C'est trop tard pour le décodage non ?

  4. #4
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Salut,
    Je ne sais pas si ca va t'aider, mais il existe un objet en .Net nommé System.Console et qui possède les propriétés InputEncoding et OutputEncoding. A mon avis tu devrais trouver de quoi résoudre ton problème en passant par la.
    Et pour répondre à ta question, non ce n'est pas trop tard pour encoder/decoder. Le tout est de savoir dans quel encodage tu reçois et dans lequel tu souhaite convertir.

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Peut-être comme ceci (trouvé sur le Web, dernière ligne modifiée pour l'encodage):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Create a new StreamReader using standard input as the stream
    System.IO.StreamReader ConsoleStreamReader =
    new System.IO.StreamReader(
    // Sets reader's input stream to the standard input stream
    new System.IO.StreamReader(
    System.Console.OpenStandardInput( ),
    System.Text.Encoding.Default).BaseStream,
    // Sets reader's encoding to whatever standard input is using
    System.Text.Encoding.GetEncoding("ISO-8859-1"));
    Remplacer ensuite Console par ConsoleStreamReader.

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    281
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 281
    Par défaut
    Bonjour,

    Merci à tous pour vos réponses !
    Malheureusement je n'ai pas réussi

    Voici ce que j'ai tenté (entre autres)

    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
     
     // Récupère les arguments passés
     Encoding e = Encoding.GetEncoding("utf-8");
     System.Console.InputEncoding=e;
     
      int nBParam = 0;
      nBParam = args.Length;
      int i = 0;
       if (nBParam > 0)
       {
          for (i = 0; i < nBParam; i++)// Parcour des arguments passés et stockage en variable
           {
     
           }
       }
    Cela en change rien, toujours pas d'accents

    Encore merci !

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/03/2014, 18h45
  2. [FPDF] Caractères accentués depuis MySQL
    Par jeje63 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 14/01/2010, 08h58
  3. [console Windows] Caractères accentués
    Par sekiryou dans le forum C++
    Réponses: 16
    Dernier message: 26/03/2008, 03h19
  4. [Débutant] Pb caractères accentués sous console dos
    Par remitbo dans le forum Langage
    Réponses: 5
    Dernier message: 04/01/2007, 14h34
  5. Caractères accentués en mode console
    Par Koubiacz dans le forum C++
    Réponses: 2
    Dernier message: 13/05/2005, 07h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo