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 :

[C# 3.5] string encodage de caractères


Sujet :

C#

  1. #1
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Points : 2 190
    Points
    2 190
    Billets dans le blog
    3
    Par défaut [C# 3.5] string encodage de caractères
    Bonjour,

    voilà un problème que je n'arrive pas à résoudre :

    j'ai une chaine qui se retrouve avec un format bizarre dans mon appli, genre avec le "é" remplacé par un "é" .

    Bref, j'ai déjà eu ce souci dans divers langages et à chaque fois la conversion est facile et possible..

    La impossible de transformer ces caractères bizarres (qui sont en utf8 je suppose) pour qu'ils soient bien retranscris.

    Quelqu'un aurait-il une solution ?


    EDIT :

    ceci ne m'affiche pas ces caractères bizarres mais des "?" à la place...
    Peut-être un début de soluce ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     byte[] myASCIIBytes = Encoding.ASCII.GetBytes(dtc.ColumnName);
     byte[] myUTF8Bytes = ASCIIEncoding.Convert(Encoding.ASCII,   Encoding.UTF8, myASCIIBytes);
       string deserialisedText = Encoding.UTF8.GetString(myUTF8Bytes);
    Merci d'avance pour votre aide,

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Au lieu de Encoding.ASCII essaye Encoding.Default (ANSI). Sinon ta chaîne provient de quoi ?

  3. #3
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Points : 2 190
    Points
    2 190
    Billets dans le blog
    3
    Par défaut
    Marche pas.... Elle provient d'un XmlMap qui est dans un classeur Excel.

    Le XmlMap a déjà le problème. Ses informations proviennent d'un :

    DataSet.GetXmlSchema();

    Le top serait de prendre le problème à la "racine". J'ai donc essayé de convertir le schéma mais ça ne fonctionne pas non plus.

  4. #4
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    string s = "é";
                byte[] l = new byte[2];
                for(int i = 0;i<2;i++)
                {
                    l[i] = (byte) s[i];
                }
                string f = Encoding.UTF8.GetString(l);
                MessageBox.Show(f);
    ça affiche 'é'. Donc voilà ...

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Du coup ça aussi marche :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    string s = "é";
                byte[] l = Encoding.Default.GetBytes(s);
                string f = Encoding.UTF8.GetString(l);
                MessageBox.Show(f);

  6. #6
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 144
    Points : 2 190
    Points
    2 190
    Billets dans le blog
    3
    Par défaut
    ... Tout simplement. Récup des bytes avec l'encodage utilisé et convert en utf8... Bien vu.

    Et surtout merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. encodage de caractères
    Par hugo123 dans le forum Langage
    Réponses: 7
    Dernier message: 25/01/2006, 15h04
  2. SQL String // Chaine de caractères trop longue
    Par Didier100 dans le forum Bases de données
    Réponses: 7
    Dernier message: 17/10/2005, 21h57
  3. [String] Inversion des caractères
    Par OverCat dans le forum Langage
    Réponses: 5
    Dernier message: 13/04/2005, 19h11
  4. [String] Encodage de caractères pour une sortie HTML
    Par elitost dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 10/11/2004, 08h02
  5. Réponses: 4
    Dernier message: 05/07/2004, 13h17

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