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 :

Problème d'encodage des caractères


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 460
    Points : 112
    Points
    112
    Par défaut Problème d'encodage des caractères
    Salut !

    J'ai un petit souci avec l'encodage des caractères...

    Explication :

    J'ai un fichier texte (.txt) qui contient entre autre des accents (et autres caractères "spéciaux"). Quand je l'ouvre avec le bloc-note, tout est okay ! Quand je l'ouvre avec Word (Windows par défaut), tout va bien aussi.
    Mais lorsque je l'ouvre avec mon appli C# (Visual Studio), ça bugue; les accents & Co ne s'affichent pas correctement ! Et je ne sais pas quoi faire.

    Avez-vous une idée ?

    L'encodage par défaut semble être l'ANSI.
    Dois-je utiliser cette fonction ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(line));
    Merci !

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 72
    Points : 107
    Points
    107
    Par défaut
    Bonjour,
    Essaye ceci !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                // Create an instance of StreamReader to read from a file.
                // The using statement also closes the StreamReader.
         using (StreamReader sr = new StreamReader(@"Fichier.txt",ASCIIEncoding.Default)) 
                {
                    string line;
                    // Read and display lines from the file until the end of 
                    // the file is reached.
                    while ((line = sr.ReadLine()) != null) 
                    {
                        textBox1.AppendText(line + "\n");
                    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 460
    Points : 112
    Points
    112
    Par défaut
    Merci pour ta réponse.
    Ta solution offre un bon résultat (de même que l'UTF7), à ceci près que le caractère ' & ' n'apparaît pas (il est comme avalé)... Mais pourquoi, là j'en ai pas la moindre idée !

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 72
    Points : 107
    Points
    107
    Par défaut
    Pour le "&" il suffit de faire ceci "&&"

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 460
    Points : 112
    Points
    112
    Par défaut
    Ok, merci !


    J'ai une toute autre question, mais je profite de ce topic pour la poser :

    J'ai créé dynamiquement une série de checkbox dans mon appli. Je voudrais qu'un clic sur n'importe quelle d'entre elles génère le même évènement (mais en sachant quelle checkbox a provoqué l'évènement).
    Comment faire ?

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 72
    Points : 107
    Points
    107
    Par défaut
    Dans tes propriétés de tes checkbox sur l'évènement "click' sélectionne la même méthode.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 460
    Points : 112
    Points
    112
    Par défaut
    En fait, j'ai quand même un souci...

    J'aimerais pouvoir récupérer la variable ' i ' dans mon évènement; comment faire ?

    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
    16
    17
    18
    19
    20
    21
    22
     
    public partial class Form1 : Form
        {
            ...
            private CheckBox[] tabcbox1;
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
               ...
               tabcbox1[i].Click += tabcbox1_Click;
               ...
            }
     
            private void tabcbox1_Click(object sender, EventArgs e)
            {
                //  J'aimerais pouvoir récupérer la variable ' i ' ici !
            }

    Et à propos, est-il plus exact d'écrire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabcbox1[i].Click += tabcbox1_Click;
    ou cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabcbox1[i].Click += new EventHandler(tabcbox1_Click);
    Merci !

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 460
    Points : 112
    Points
    112
    Par défaut
    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tabcbox1[i].Click += ((sender2, e2) => tabcbox1_Click(sender2, e2, i));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void tabcbox1_Click(object sender, EventArgs e, int i)
            {
                MessageBox.Show(i.ToString());
            }
    Mais il m'affiche le même nombre à chaque fois (à savoir le nombre total de checkbox créées)...

    En fait, l'appli a bien créé x évènements pour les x checkbox (elles répondent toutes au clic) mais je voudrais que dans l'évènement, l'appli me renvoie le n° de la checkbox (l'indice dans la tableau de checkbox créé au départ).
    Est-ce possible selon vous ?

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 72
    Points : 107
    Points
    107
    Par défaut
    J'avais plusieurs button0, button1 ,button2 à nbr sur ma fiche je les ai mis dans un List<Control> lButton ...
    tu peux utiliser ceci pour un autre composant et récupérer facilement l'indice cliqué.

    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
    16
    17
    18
    19
    20
     
     
                lButton = new List<Control>();
                for (int i = 0; i < nbr; i++)
                    lButton.AddRange(this.Controls.Find("button" + i, true).ToList<Control>());
     
                for (int i = 0; i < nbr; i++)
                {
                    Button ctrButton = (Button)lButton[i];
                    ctrButton.Click += new EventHandler(ctrButton_Click);
                }
     
     
           // pour récupérer l'indice du button
            private void ctrButton_Click(object sender, EventArgs e)
            {
     
                int iButton = Convert.ToInt16(((Button)sender).Name.Replace("button", ""));
     
            }

  10. #10
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    L'objet sender de ton événement EST ta checkbox, tu n'as pas besoin de son indice dans le tableau, il te suffit de le cast en CheckBox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void tabcbox1_Click(object sender, EventArgs e)
    {
      var cb = sender as CheckBox;
      if(cb == null) return;
      // code si c'est bien une CheckBox...
    Sinon pour utiliser une variable de la façon à laquelle tu penses il te faudra auparavant comprendre les "closure", c.à.d la capture de variable.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 460
    Points : 112
    Points
    112
    Par défaut
    En fait, c'était tout simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     tabcbox1[i].Click += new EventHandler(tabcbox1_Click);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void tabcbox1_Click(object sender, EventArgs e)
            {
                int i = Array.IndexOf(tabcbox1, sender);
                ...
    Encore merci pour vos recherches !

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 460
    Points : 112
    Points
    112
    Par défaut
    J'ai un nouveau souci avec la mise en forme d'un richtextbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ...
     
              StringBuilder sb = new StringBuilder();
              sb.AppendFormat("Blind N° {0}   -   Thème : {1}   -   Début : {2} - {3}", textBox1.Text, textBox4.Text, monthCalendar1.SelectionRange.Start.ToShortDateString(), textBox3.Text);
              richTextBox1.SelectedText = sb.ToString();
              richTextBox1.SelectionFont = new Font("Consolas", 10, FontStyle.Bold | FontStyle.Underline);
    ...
              richTextBox1.AppendText(sb.ToString());
    ...
    Mon problème : le texte sélectionné n'est pas mis en gras ni souligné...
    Voyez-vous pourquoi ?

    Merci !

    Edit :

    Si par contre, je change la ligne 5 ci-dessus par celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    richTextBox1.Select(richTextBox1.Text.IndexOf(sb.ToString()), sb.Length);
    alors, tout le texte de la richtextbox devient gras et souligné (et pas uniquement la sélection faite)...

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/03/2016, 11h05
  2. problème d'encodage des caractères
    Par wassilooooooooo dans le forum Général Python
    Réponses: 2
    Dernier message: 19/05/2012, 00h35
  3. [Encodage] Formulaire html local (sans php) problème d'encodage des caractères
    Par DubeiserTM dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 01/06/2011, 10h34
  4. [FPDF] problème d'encodage des caractères cyrilliques
    Par rusey dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 10/10/2010, 09h50
  5. Problème d'encodage des caractères
    Par loic69100 dans le forum iReport
    Réponses: 0
    Dernier message: 19/03/2010, 10h17

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