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 :

Lecture et conversion utf8 en ASCII


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut Lecture et conversion utf8 en ASCII
    Bonjour

    Pour lire un fichier texte j'ai l'habitude de faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
          StreamReader F_IN = new StreamReader(Prm.InpFile,Encoding.Default);
          while ((bus = F_IN.ReadLine()) != null)
          {
          }
    Mais je realise que les chaines contenant de l'UTF8 restent en UTF8

    Quelle est la bonne méthode pour recuperer une chaine ASCII sachant qu'il s'agit essentiellement de caracteres latin
    Les methodes de conversion semblent tellement nombreuses que je prefere me fier a l'expèrience des autres avant de les essayer toutes pour trouver la bonne

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7
    Par défaut
    Salut

    Je pense que tu trouvera ta réponse avec System.Text.Encoding
    voir cet article sur msdn
    Encoding Class

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Pasquall

    Cet article me permet de voir que AsciiEncoding est tout a fait inaproprié pour les caracteres Latin

    The ASCIIEncoding class encodes Unicode characters as single 7-bit ASCII characters. This encoding only supports character values between U+0000 and U+007F.
    Ce que je cherche c'est d'avoir les accentués encodés sur sur un byte de 8 bit (valeurs 0-255) comme au bon vieux temps de ANSI et pas en trois bytes utf8

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Je continue a chercher mais je poste ici ces liens fort amusants


    http://www.yoda.arachsys.com/csharp/unicode.html

    http://www.joelonsoftware.com/articles/Unicode.html

    Et extrait fort pitoresque

    So I have an announcement to make: if you are a programmer working in 2003 and you don't know the basics of characters, character sets, encodings, and Unicode, and I catch you, I'm going to punish you by making you peel onions for 6 months in a submarine. I swear I will.


    Donc en definitive je pense que c'est une conversion utf-8 -> UCS-2 que je cherche

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Pour illustrer le problème

    Je voudrais pouvoir convertir ceci
    Blv de la 2 ème Armée Britanique N° 140
    En ceci
    Blv de la 2 ème Armée Britanique N° 140
    C'est a dire qu'en C# je puisse par exemple faire

    mot.Equals("Armée");
    et non

    mot.Equals("Armée");
    En definitive je ne suis pas parvenu a convertir les chaines apres lecture mais j'ai contourné en ouvrant le StreamReader avec un encoding UTF8 et en ouvrant le StreamWriter avec un encoding Default

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          StreamReader F_IN = new StreamReader(Prm.InpFile,Encoding.UTF8);
          StreamWriter f_out = new StreamWriter(Path.ChangeExtension(Prm.OutFile, "fmt"),false,Encoding.Default);

  6. #6
    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
    Quelle est la bonne méthode pour recuperer une chaine ASCII sachant qu'il s'agit essentiellement de caracteres latin
    Je ne suis pas de répondre exactement à la question, mais pour lire des caractères accentués classiques DOS, on utilisera un StreamReader en spécifiant comme paramètre d'encoding :
    System.Text.Encoding.GetEncoding("ISO-8859-1")

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

Discussions similaires

  1. Conversion UTF8 et utilisation de WideCharToMultiByte()
    Par Frank38 dans le forum Visual C++
    Réponses: 5
    Dernier message: 30/09/2008, 14h25
  2. Conversion de chaine ASCII->Unicode
    Par zzorglub dans le forum C
    Réponses: 6
    Dernier message: 04/04/2007, 13h35
  3. Lecture ou conversion en fichier d'un vecteur binaire
    Par Armitage1982 dans le forum SL & STL
    Réponses: 3
    Dernier message: 21/12/2006, 23h46
  4. Conversion hexadécimal en ascii
    Par andrianiaina dans le forum C
    Réponses: 12
    Dernier message: 08/08/2006, 07h21
  5. conversion UTF8 vers ASCII en C
    Par znarf dans le forum C
    Réponses: 2
    Dernier message: 05/07/2006, 13h55

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