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

Windows Forms Discussion :

Application supportant l'alphabet Cyrillique


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Ingénieur de développement
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur de développement

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 96
    Points
    96
    Par défaut Application supportant l'alphabet Cyrillique
    Bonjour à tous,

    Un de mes clients pour qui j'ai développé une application (C# + Winform), me demande maintenant d'adapter l'application pour supporter l'affichage des textes (labels, listes, boutons, ...., + MessageBox) avec l'alphabet Cyrillique ou "Normal".

    J'ai gratouillé un peu avec Google, je parcours les articles sur l'Encodage, Unicode et autres, mais je trouve les explications un peu brouillon, dans le sens ou je trouve pas bien le point de départ !!

    SI je dispose d'un Windows configuré en Russe, ce dernier supporte-t-il par défaut l'alphabet Cyrillique ? Si oui, il y a bien quelque part un "Flag" qui indique le type d'encodage souhaité ?
    Puis-je basculer mon Windows FR dans une configuration utilisant par défaut l'alphabet Cyrillique ?


    Dans l'attente de vous lire (idées, articles, exemples, ....)

    Merci à tous


    NOTE : pour mon application, je dispose des textes traduits en Russe/Cyrillique

  2. #2
    Membre régulier
    Profil pro
    Ingénieur de développement
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur de développement

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 96
    Points
    96
    Par défaut
    Je poste moi-même la réponse puisque j'ai trouvé une solution !


    De base, en C-Sharp, si l'on met une chaine UNICODE en Cyrillique dans un "string", il n'y a pas de souci !! Les "string" gèrent l'UINICODE.

    string MaChaine = "Добавить текст";

    Note : pour le fun, je réécris la ligne ci-dessus en mettant les balises de code du gestionnaire de Forum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string MaChaine = "Добавить текст";
    Tous les textes que je dois afficher sont présents dans un fichier externe avec une structure type Fichier INI :
    [SECTION]
    Clef = Valeur

    En fonction de la Culture de l'application, je charge donc le fichier des textes (je n'ai pas voulu faire une gestion avec les chaines de caractères dans des fichiers de ressources, car c'est le commanditaire de mon application qui se charge des traductions en fonction de l'utilisation finale du logiciel !!).

    Pour Lire/Ecrire les fichiers INI je me suis créer une simple classe avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //--- Fonctions Win32 importées
    [DllImport("KERNEL32.DLL"]
    private static extern int WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString,  string lpFileName);
     
    [DllImport("kernel32.dll"]
    private static extern int GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
    Mais cela ne fonctionne pas, et lors du chargement d'un fichier texte encodé en UNICODE, c'est la catastrophe !!
    Un simple point d'arrêt dans le code me permet de visualiser l'erreur.


    Pour résoudre le problème, donc :
    1/ Mes fichiers (INI) doivent être encodés en UNICODE et non pas en ANSI
    2/ J'ai du modifier la déclaration d'import des fonctions "GetPrivateProfileString" et "WritePrivateProfileString" comme indiqué ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //--- Fonctions Win32 importées
    [DllImport("KERNEL32.DLL", CharSet = CharSet.Unicode)]
    private static extern int WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString,  string lpFileName);
    [DllImport("kernel32.dll", CharSet=CharSet.Unicode)]
    private static extern int GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
    Maintenant tout est OK.





    NOTE : Pour ré encoder un fichier texte en UNICODE, vous pouvez utiliser Notepad++, ou simplement le Notepad de Windows :

    1/ charger le fichier
    2/ enregistrer-sous, puis sélectionner le type d'encodage désiré (il y a une boite combo sur la bas de la fenêtre) voir image : Nom : Capture.JPG
Affichages : 121
Taille : 12,8 Ko

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

Discussions similaires

  1. Alphabet cyrillique dans VBA
    Par Meduse dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/04/2016, 16h37
  2. [AC-2003] Requète et Alphabet Cyrillique
    Par Kloun dans le forum Access
    Réponses: 2
    Dernier message: 26/01/2011, 09h31
  3. Label en Alphabet cyrillique
    Par Idronlys dans le forum C++Builder
    Réponses: 1
    Dernier message: 01/10/2009, 10h42
  4. [Delphi 7][Windows XP] Alphabet cyrillique
    Par alainvh dans le forum Débuter
    Réponses: 5
    Dernier message: 24/11/2007, 08h55

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