+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Administrateur Unix / Oracle retraité
    Inscrit en
    septembre 2011
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur Unix / Oracle retraité
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2011
    Messages : 1 057
    Points : 1 516
    Points
    1 516

    Par défaut Caractères arabes dans TextArea

    Bonjour,

    Tout d'abord, je suis débutant en Java.

    J'ai réalisé, sans trop de difficultés en Perl, une interface de gestion de cours d'arabe qui me donne satisfaction au bémol près que si je clique dans la zone qui affiche le texte arabe (ScrolledText), celui-ci est complètement désorganisé.
    Visiblement le bug traîne depuis des lustres et ne sera pas corrigé dans un avenir proche.
    http://www.developpez.net/forums/d11...scrolled-text/

    Je fais quelques essais en Java pour voir ...
    Là lorsque j'écris dans un TextArea avec un clavier arabe, de petits carrés remplacent les caractères arabes. Autrement dit, là encore les caractères codés sur plusieurs octets ne passent pas.
    Voici le bout de code :
    Code :
    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
    54
    55
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
     
    public class ta_scroll{
        private JFrame f; //Main frame
        private JTextArea ta; // Text area
        private JScrollPane sbrText; // Scroll pane for text area
        private JButton btnQuit; // Quit Program
     
        public ta_scroll(){ //Constructor
            // Create Frame
            f = new JFrame("Swing Demo");
            f.getContentPane().setLayout(new FlowLayout());
     
            // Create Scrolling Text Area in Swing
            ta = new JTextArea("", 5, 20);
            ta.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);  
            // String Result = new String(ta.nextToken().getBytes("windows-1256"), "utf-8");
            // String str = new String("ßã".getBytes(), "UTF-8");
     
            Font font = new Font("Verdana", Font.BOLD, 18);
            ta.setFont(font);
            ta.setForeground(Color.BLUE);
            ta.setLineWrap(true);
            sbrText = new JScrollPane(ta);
            sbrText.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
            // Create Quit Button
            btnQuit = new JButton("Quit");
            btnQuit.addActionListener(
                        new ActionListener(){
                            public void actionPerformed(ActionEvent e){
                                System.exit(0);         
                            }
                        }
                    );
        }
     
        public void launchFrame(){ // Create Layout
            // Add text area and button to frame
                f.getContentPane().add(sbrText);
            f.getContentPane().add(btnQuit);
     
            // Close when the close button is clicked
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //Display Frame
            f.pack(); // Adjusts frame to size of components
            f.setVisible(true);
        }
     
        public static void main(String args[]){
            ta_scroll gui = new ta_scroll();
            gui.launchFrame();
        }
    }
    Juste une question : Peut-on sans trop de difficultés gérer un texte en arabe en Java, dans un TextaArea ? Éventuellement dans un autre langage ?
    Ça doit être possible, sur le web les pages de sites arabes s'affichent correctement.

    Merci d'avance pour votre aide.

    Le résultat en image :

  2. #2
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Administrateur Unix / Oracle retraité
    Inscrit en
    septembre 2011
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur Unix / Oracle retraité
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2011
    Messages : 1 057
    Points : 1 516
    Points
    1 516

    Par défaut

    Pardon ça fonctionne avec :
    Code :
    Font font = new Font("Serif", Font.BOLD, 28);
    ou
    Code :
    Font font = new Font("Dialog", Font.BOLD, 28);
    Visiblement les caractères arabes n'ont pas été portés dans "Verdana"
    Quant à "Simplified Arabic" cela plante le programme avec :
    C:\Users\Michel\Documents\EssJava>java ta_scroll
    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000076d00895, pid=2956, tid=2012
    #
    # JRE version: 7.0-b147
    # Java VM: Java HotSpot(TM) 64-Bit Server VM (21.0-b17 mixed mode windows-amd64 compressed oops)
    # Problematic frame:
    # C [ntdll.dll+0x50895]
    #
    # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
    #
    # An error report file with more information is saved as:
    # C:\Users\Michel\Documents\EssJava\hs_err_pid2956.log
    #
    # If you would like to submit a bug report, please visit:
    # http://bugreport.sun.com/bugreport/crash.jsp
    #
    Alors que cette police est accessible dans Word et Perl.
    -font => '{Simplified Arabic} 26', # Arabe
    Dommage car c'est celle qui positionne les caractères diacritiques (accents) de façon bien visible.

    Je suis preneur de tout conseil pour migrer de Perl à Java.
    Entre autre je cherche l'équivalent de regex de ce type :
    Code :
    $Lig =~ s/(\x{0627}\x{0644}\x{062A}[\x{064E}\x{0650}|\x{064F}])\x{0651}/$1/go; # Supprime Chadda \x{0651} sur ت \x062A
    Merci d'avance.

  3. #3
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2004
    Messages
    3 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2004
    Messages : 3 290
    Points : 16 867
    Points
    16 867

    Par défaut

    Bonjour,

    Essaye avec la dernière version de JRE 7.
    Sinon, sur une version 6 ça semble fonctionner normalement chez moi (je n'ai pas la 7 sous la main).
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire dont il nous faut prendre soin en l'alimentant soigneusement, par nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  4. #4
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Administrateur Unix / Oracle retraité
    Inscrit en
    septembre 2011
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur Unix / Oracle retraité
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2011
    Messages : 1 057
    Points : 1 516
    Points
    1 516

    Par défaut

    Merci Laurent.B pour ta réponse,

    Je suis en JRE 7 :
    C:\Users\Michel>java -version
    java version "1.7.0"
    Java(TM) SE Runtime Environment (build 1.7.0-b147)
    Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)
    C'est quoi qui fonctionne chez toi la font "Simplified Arabic" et/ou "Verdana" ?

    Vu pour pour la balise 'quote' pardon et MERCI.

  5. #5
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    novembre 2004
    Messages
    3 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2004
    Messages : 3 290
    Points : 16 867
    Points
    16 867

    Par défaut

    Oui, j'ai bien vu que tu étais en JRE 7, ça apparaît dans la trace mais par contre aucune révision n'est indiquée ("u" quelque chose"), donc il te faut installer la dernière révision du JDK, la 7u6.

    Ton plantage vient visiblement d'un bug qui a été corrigé en u1, cf. http://bugs.sun.com/bugdatabase/view...bug_id=7064302 trouvé en cherchant avec "Java VM: Java HotSpot(TM) 64-Bit Server VM (21.0-b17 mixed mode windows-amd64 compressed oops)" dans Google.

    Ce n'est pas tant les caractères arabes que des histoires de dimensions de caractère je pense... enfin bref ! Ca devrait corriger ton problème.

    Ca fonctionne en Simplified Arabic mais pas en Verdana.

    Pour ce qui est de la regex, en Java c'est très similaire puisque le moteur de Java pour les regex est basé sur celui de Perl. Il faut doubler les anti-slash par contre '\' puisqu'en Java ce sont des caractères d'échappement.

    Cf. la Javadoc de Pattern http://docs.oracle.com/javase/7/docs...x/Pattern.html
    Les différences Perl/Java sont même indiquées.
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire dont il nous faut prendre soin en l'alimentant soigneusement, par nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  6. #6
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Administrateur Unix / Oracle retraité
    Inscrit en
    septembre 2011
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur Unix / Oracle retraité
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2011
    Messages : 1 057
    Points : 1 516
    Points
    1 516

    Par défaut

    MERCI Laurent.B
    Je n'imaginais pas que ce puisse être un pb de version, j'ai installé jdk-7-windows-x64.exe début août depuis le site d'Oracle.
    Avec jdk-7u6-windows-x64.exe c'est parfait !
    C:\Users\Michel\Documents\EssJava>java -version
    java version "1.7.0_06"
    Java(TM) SE Runtime Environment (build 1.7.0_06-b24)
    Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)
    MERCI aussi pour l'info et surtout le lien sur les Pattern

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •