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 :

lLecture de fichiers comportant des caractères cyrilliques et latins


Sujet :

C

  1. #21
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <locale.h>
    #include <wchar.h>
     
    int main (void)
    {
        setlocale (LC_CTYPE, "");
        wchar_t c = L'\U000001AE';/* dec:430 => hex:1AE */
        putwchar (c);
        return 0;
    }
    NB: sur mon compilateur, le type wchar_t fait 4 bytes ce qui explique les 8 chiffres hexa, sur windows, il me semble que le type wchar_t fait 2 bytes, la constante correspondante doit donc être en toute logique : L'\U01AE' .

  2. #22
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 45
    Points : 29
    Points
    29
    Par défaut J'y suis presque...
    Tout d'abord merci à tous! J'ai considérablement avancé!

    - j'arrive maintenant à lire un fichier unicode, à recopier son contenu dans un autre
    - j'arrive à affecter les codes des caractères unicode que je veux dans une variables "wide character (wc)", et à les copier dans un fichier

    Dans cette dernière opération, j'ai essayé de copier le fameux bom FFFE affecté en dur. De deux manières:
    et
    Dans la première, ça ne marche pas: rien de tout ce que je copie ensuite dans le fichier n'apparaît. (fichier verif-method1.txt)
    Dans la 2e, tout est copié, mais il reste un résidu (résidu de bom?), au début du fichier. (fichier verif-method2.txt)
    Si vous avez une solution, tant mieux. Sinon, je continuerai à récupérer le bom en ouvrant un autre fichier. C'est un peu la grosse artillerie, mais ça marche. (fichier verif-grosse artillerie.txt)

    Maintenant, je voudrais faire "l'inverse". C'est à dire, j'ai une variable wc, par exemple c='б' (caractère cyrillique) mais je ne le sais pas, ou bien tout simplement c='(' (caractère parenthèse ouvrante). Je voudrais connaître le code L'\U0000----' correspondant. Le récupérer d'une quelconque manière, par exemple, d'une manière imprimable en chiffres à l'écran. Vous pouvez m'aider?

    Et puis j'ai une 3e petite chose, mais si vous n'avez pas la réponse, tant pis, j'écrirai tout à la main, un par un. C'est long, mais ça marche.
    J'envisage de définir tous les caratères (cyrilliques et autres caractères bizarres présents dans le fichier de lecture) comme constantes de référence, par une affectation en dur. Plus tard, je les utiliserai pour les comparer. Par exemple, dans le fichier ".c" joint, j'ai fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       c = L'\U00000410';
       fwprintf (stream_verif, L"%c", c);
       c = L'\U00000411';
       fwprintf (stream_verif, L"%c", c);
       c = L'\U00000412';
       fwprintf (stream_verif, L"%c", c);
    Or ça m'arrangerait de le faire en écrivant un code générique, pour une variable i allant de 00000410 à 0000044F.
    Existe-t-il l'équivalent de la fonction 'eval', comme sous matlab, qui dans le principe pourrait fonctionner comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    pour i = 411 à 44F
       c = L'\U00000411';
       fwprintf (stream_verif, L"%c", c);
    str_exec1 = >>c = L'\U00000'<< + >>'valeur de i en décimal'<<
    eval(str_exec1);
    str_exec2 = >>fwprintf (stream_verif, L"%c", c);<<
    eval(str_exec2);
    Encore merci! Sans votre aide, j'aurai abandonner le projet...
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Fichier contenant des caractères cyrilliques
    Par DSGSLA dans le forum Windows
    Réponses: 1
    Dernier message: 06/08/2010, 14h49
  2. Réponses: 11
    Dernier message: 01/04/2009, 15h42
  3. Réponses: 2
    Dernier message: 16/11/2008, 16h09
  4. [Oracle] Insertion de données comportant des caractères accentués
    Par elzebore dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/11/2007, 19h44
  5. Réponses: 5
    Dernier message: 07/10/2007, 17h14

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