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

AWT/Swing Java Discussion :

l'arabe en java


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Par défaut l'arabe en java
    Salut tout le monde,

    j'aimrais faire un logiciel,
    - qui lit un fichier qui a comme contenu un texte ecrit en arab,
    - qui fait la recherche d'un mot dans ce texte ...

    le problème que je rencontre est le codage des caractères arabes (Unicode), et bien sur le sens de leur ecritures.

    le logiciel à une interface SWING


    donc si quelqu'un a quelque chose sur :

    - Le codage des caractères arabe
    - La possible de recherché dirrectement un mot ecrit dans un JTextField, dans le fichier ...


    Je vous remerci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Si tu es sous Windows, tu peux tout simplement utiliser la table des caracteres pour connaitre l'encodage des caracteres arabes (attention les valeurs donnees par la table des caracters sont correctes mais leur affichage n'utilise pas la presentation demandee par Java). Une autre astuce si tu dispose d'un clavier arabe ou d'une methode de saisie pour l'arabe est de te creer un editeur en Java et de sauvegarder ton texte saisi en UTF-8 ou UTF-16, cela te permettrai de decouvrir les valeurs d'encodage des caracteres.

    Enfin comme l'indique la javadoc de la classe Character, tu peux aller sur http://www.unicode.org/ pour trouver de la documentation et une table listants tous les codes.

    Pour le reste rien qui change. Normalement si la Locale ou les options du JTextField sont correctement configures (bidir, etc...); il devrai accepter du texte de droite a gauche sans probleme y compris quand le curseur doit changer de direction (texte contenant a la fois du romain et de l'arabe) et normalement Java est d'ailleurs capable de faire les liaisons correctes entre chaque glyphe (notes : toutes ces infos viennent du bouquin Java2D Graphics de O'Reilly, je ne les ai pas experimente moi-meme, hormis ce qui est donne dans les exemples du livre). C'est a verifier mais il est probable que si du texte arabe est present dans un flux, il devrait apparaitre correctement inverse (droite->gauche au lieu de gauche->droite) a l'ecran.

    Pour la recherche, je ne sais pas. Ou du moins disons que si ton fichier est suffisement petit tu peux le charger entierement dans une chaine de caractere et utiliser les regexp pour la recherche. Si le fichier est trop gros, binaire ou un document d'un format particulier, je ne sais pas.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 32
    Par défaut
    salut,

    moi aussi j'aimerai faire un logiciel dans le genre, mais la source des données serait un fichier Excel dans lequel il y aurait un mélange de chaînes de caractères arabes et de caractères ascii (8 bits).

    pour lire les fichiers excel, j'utilise l'API POI. Jusqu'à présent tout marche bien pour des caractères sur 8 bits (ascii). Mais maintenant je dois passer à la lecture des caractères arabe, et je ne sais pas par où commencer.

    j'ignore si l'API POI que j'utilise permet de lire et de reconnaître les caractères arabes. Si il y a des experts de POI, j'aimerais avoir des avis.

    Sinon mon logiciel ne nécessite pas l'affichage des caractères arabes, il faut juste que je recupère une chaîne de valeurs hexa représentant la chaîne arabe.

    merci pour votre aide

  4. #4
    Membre confirmé Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Par défaut
    Merci a toi bouye,

    - j'ai vu le site de l'UNICODE que vous m'avez donné
    Il y a pas mal d'articles à lire

    En tout cas il faut lire beaucoup sur le codage des caractères Arabe,
    car il y a d'autres choses beaucoup plus compliqué que j'aimrai faire avec cette langue

    - Pour le livre que vous m'avez indiqué le nom , ou je peut le trouvé ?

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Tu peux le trouver probablement sur Amazon.com et chez l'editeur O'Reilly mais j'ignore s'il existe en version francaise. Cependant ce livre parle principalement de graphisme 2D, ce qui n'est guere trop ton probleme.

    Cependant les exemples du livre sont disponibles sur http://examples.oreilly.com/java2d/, tu y trouvera nottament l'exemple BidirectionalText qui affiche une chaine romain+arabe :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    import java.awt.*;
    import java.awt.event.*;
     
    public class ApplicationFrame
        extends Frame {
      public ApplicationFrame() { this("ApplicationFrame v1.0"); }
     
      public ApplicationFrame(String title) {
        super(title);
        createUI();
      }
     
      protected void createUI() {
        setSize(500, 400);
        center();
     
        addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            dispose();
            System.exit(0);
          }
        });
      }
     
      public void center() {
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = getSize();
        int x = (screenSize.width - frameSize.width) / 2;
        int y = (screenSize.height - frameSize.height) / 2;
        setLocation(x, y);
      }
    }
     
    import java.awt.*;
     
    public class BidirectionalText {
      public static void main(String[] args) {
        Frame f = new ApplicationFrame("BidirectionalText v1.0") {
          public void paint(Graphics g) {
            Graphics2D g2 = (Graphics2D)g;
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
     
            Font font = new Font("Lucida Sans Regular", Font.PLAIN, 32);
     
            g2.setFont(font);
            g2.drawString("Please \u062e\u0644\u0639 slowly.", 40, 80);
          }
        };
        f.setVisible(true);
      }
    }
    Alors :

    - d'une part tu peux voir le codage de 3 des caracteres arabes. Cela peut te donner une valeur de depart de la plage vers laquelle chercher les caracteres arabes dans la table des characteres ou dans la documentation d'unicode.

    - tu peux te rendre compte qu'ils sont correctement dessines de la gauche<-droite alors que les caracteres romains sont correctement dessines de gauche->droite. C'est a dire que le caractere arabe le plus a gauche dans la chaine de texte '\u062e' se retrouve dessine le plus a droite dans le rendu (pour s'en rendre compte c'est facile, il suffit de le supprimer et de comparer les rendu). Tu peux donc en deduire qu'un mot en arabe apparaitra inverse (par rapport a son sens de lecture arabe normal) dans une chaine de charactere java (ex bidon avec des caracters romains : a<-b<-c<-d sera affiche a l'ecran mais la chaine de charactere contiendra en fait d->c->b->a).

    - les liaisons entre les caracteres sont correctement rendues (si tu met des espaces entre, les caracteres reprennent leur forme d'origine).

    Ensuite, si tu met cette meme chaine dans un TextField ou un JTextField, tu te rendra compte que :

    - le curseur se deplace correctement a l'interieur de la chaine arabe, c'est a dire qu'il se deplacera de gauche->droite dans la chaine romaine puis sautera vers le caractere arabe le plus a droite, se deplacera de gauche<-droite jusqu'au caractere le plus a gauche et ensuite reviendra tout a droite de la chaine arabe pour continer avec les derniers caractere romains.

    Apres concernant Excel, euh........................... voila je n'ai aucune idee de comment Excel stocke de l'arabe (est-ce inverse comme en Java ?) ni du codage utilise (il te faudra probablement convertir de ce codage vers UTF-8/16).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre confirmé Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Par défaut
    Merci beaucoup bouye,

    ca va beaucoup m'aidé

Discussions similaires

  1. problème d'insertion de caractère d'arabe en java
    Par Asmaou dans le forum Langage
    Réponses: 5
    Dernier message: 25/02/2013, 01h18
  2. Afficher de l'arabe en Java
    Par med.jrd dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 31/12/2009, 10h35
  3. Comparaison deux chaine de caractère arabe en java
    Par vetchang dans le forum Général Java
    Réponses: 9
    Dernier message: 08/10/2007, 23h53
  4. [Caractères spéciaux][arabe]codage et java
    Par souraf dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 06/03/2006, 11h26
  5. l'arabe avec java
    Par ahmeds dans le forum JBuilder
    Réponses: 3
    Dernier message: 12/11/2004, 12h12

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