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 :

Decoder un fichier csv vers mon code C# : avoir les accents


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut Decoder un fichier csv vers mon code C# : avoir les accents
    Bonjour,

    (J'utilise excel 2007 pour générer les fichiers csv)

    Je dois développer une application en C# qui doit importer des fichier (format csv => séparateur = ";") puis les lire.

    J'importe mon fichier grâce à un composant "FileUpload", et j'ai un autre bouton pour effectuer le traitement de lecture du fichier importé.

    Voilà ce que je fais pour lire le fichier.
    J'utilise la fonction ReadAllLines avec LINQ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                    var query = from line in File.ReadAllLines(Server.MapPath("~/UploadedFiles/UploadFolderTest/") + Path.GetFileName(Fileupload1.FileName))
                                let values = line.Split(';')
                                let nbColumns = values.Count()
                                select new
                    {
                        column0= values.ElementAt(0),
                        column1= nbColumns > 1 ? values.ElementAt(1) : string.Empty,
     
     
                    };
    Mon problème est que je n'arrive pas à récupérer correctement les accents de mes chaînes de caractères, dans mon code C#.
    A la place des accents, j'ai des symboles bizarres (losange noir avec point d'interrogation)

    C'est probablement dû à un système d'encodage/décodage.

    1) Comment connaître quel est l'encodage de mon fichier csv ? (ASCII, Unicode, UTF- ..) ?
    2) Dans mon cas, que dois-je faire pour arriver à récupérer mes accents dans mon code C#.


    Merci de votre aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Pour avoir les caractères spéciaux j'utilise l'encodage default dans mon streamreader
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     StreamReader f = new StreamReader(file_name, Encoding.Default);

  3. #3
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Les problématiques d'encodage peuvent être assez complexes à solutionner.
    Pour connaitre l'encodage, un moyen "simple" et relativement fiable est d'utiliser un software comme UltraEdit (il y en a d'autres). Sinon tu peux lire l'hexa-décimal de ton fichier, mais bon, c'est un peu "sioux"...

  4. #4
    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
    Si Encoding.Default ne marche pas, essaie :
    • Encoding.GetEncoding("iso-8859-1")
    • Encoding.GetEncoding(1252)

  5. #5
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    Merci pour vos réponses.
    Comme j'essayais de le faire, il me suffisait d'utiliser la surcharge de la méthode ReadAllLines =>
    File.ReadAllLines (String, Encoding)
    Ouvre un fichier, lit toutes les lignes du fichier avec le codage spécifié, puis ferme le fichier.

    Le tout était d'utiliser le bon objet Encoding.
    Dans mon cas c'est le suivant : System.Text.Encoding.Default



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                    var query = from line in File.ReadAllLines(Server.MapPath("~/UploadedFiles/UploadFolderTest/") + Path.GetFileName(Fileupload1.FileName), System.Text.Encoding.Default)
                                let values = line.Split(';')
                                let nbColumns = values.Count()
                                select new
                    {
                        EquSupplierReference = values.ElementAt(0),
                        EquSupplierGenArt = nbColumns > 1 ? values.ElementAt(1) : string.Empty,
     
     
                    };
    Merci de m'avoir mis sur la voie.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 07/12/2005, 18h42
  2. Passer d'un fichier Excel vers mon PRG VB et vice versa
    Par DAN68 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/12/2005, 13h42
  3. [Conseil] Import de fichier CSV vers MySQL
    Par ShinJava dans le forum JDBC
    Réponses: 6
    Dernier message: 15/03/2005, 19h14
  4. Importation de fichier CSV vers une base Interbase
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 15/03/2005, 15h18
  5. Réponses: 2
    Dernier message: 14/05/2004, 12h55

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