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

Maven Java Discussion :

Probleme maven - encodage


Sujet :

Maven Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 76
    Par défaut Probleme maven - encodage
    Bonjour,

    Je vais essayer de formuler mon problème le plus clairement possible.
    J'ai crée une application Swing avec Maven.
    A un moment J'ecris dans un textArea le contenue d'un fichier en arabe.
    Le problème est que cela ne marche que si J'ai positionné la langue arabe dans les options du systeme "Region et langue" (Je suis sous windows 7), sinon j'ai des caractères bizarres.
    Mon but est que cela marche tout le temps sans que l'utilisateur change sa config système.
    Ensuite après pas mal de test, j'ai pris exactement le même code que mon projet Maven que j'ai inséré dans un nouveau projet Java avec Netbeans, mais cette fois ci sans Maven.
    Et maintenant tout fonctionne correctement, quelquesoit la langue du système, mon projet affiche bien ce que je veux.
    La seule difference entre les deux projets est que le premier a été buildé avec Maven et pas le second.

    Si vous avez compris la problématique, avez des suggestions sur une configuration à faire avec Maven pour remédier au problème, car j'ai vraiment envie de continuer ce projet avec Maven.

    Merci pour vos réponses.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 350
    Par défaut
    Choisis l'enconding avec lequel tu veux compiler l'application et configure Maven pour utiliser cette encoding.

    Exemple avec UTF-8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 76
    Par défaut
    Merci pour ta réponse,

    Mais j'ai déjà essayé cela, avec UTF-8, Windows-1256(c'est l'encodage qui marchait bien sur l'autre projet).

    Après j'ai oublié cette piste.

    C'est comme si que mon appli faite avec Maven utilise par défaut le paramétrage système.

    Je peux peut-etre essayer avec un autre encode du style ANSI.Je sais tellement pas quoi faire que j'essaie tout et n'importe quoi!

    Je vous tiens au courant si j'ai du nouveau en tout cas.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pourriez vous nous donner

    -> le fichier "arabe" (en attachement pour qu'on voie sa forme exacte)
    -> le code que vous utilisez pour le lire et l'afficher dans un JTexteArea (en utilisant les balises code du forum)
    -> éventuellement votre pom.xml (idem, balises code)

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 76
    Par défaut Detail du code
    Code qui lit le fichier et l'affiche dans un JtextPane (J'ai essayé cela pensant que ça changerait quelque chose avec le JTextArea mais en vain, c'est le meme résultat)

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
     
     private JFileChooser chooser;
        private final Locale localeSA = new Locale("ar", "SA");
        private FileUtil tool;
        private static final String NEW_LINE = "\r\n"; 
     
     
    //événement de la fenêtre qui affiche le contenu d'un fichier arabe
    private void openItemActionPerformed(java.awt.event.ActionEvent evt) {                                         
     
            chooser = new JFileChooser();
            int returnVal = chooser.showOpenDialog(MorpharFrame.this);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                copyFileToTextArea(chooser.getSelectedFile(), viewFile, localeSA);
     
            } else {
                System.out.println("there was a problem in opening file");
            }
     
        }    
     
     
    /**
         * Write a text file to a textArea with a selected Loacle
         * @param file : the file to copy
         * @param jTextArea
         * @param locale
         */
        private void copyFileToTextArea(File file, JTextPane jTextArea, Locale locale) {
     
          //  logger = Logger.getLogger(MorpharFrame.class);
          //  PropertyConfigurator.configure("log4j.properties");
     
            StringBuffer text = new StringBuffer();
            readFile(file, text);
           // logger.info("the readind file is : " + text);
            System.out.println("the readind file is : " + text);
            Font font = new Font(Font.SERIF,Font.BOLD,22);
     
            jTextArea.setFont(font);
            jTextArea.setComponentOrientation(ComponentOrientation.getOrientation(locale));
            jTextArea.setText(text.toString());
     
            //Affichage en console (meme probleme que dans le JTextPane)
             System.out.println("Text area after outPut : " + jTextArea.getText());
     
     
        }
     
     
     
     
     /**
         * Read a file and put it in a StringBuffer
         * @param file
         * @param text
         */
        private void readFile(File file, StringBuffer text) {
            try {
                FileInputStream fis;
                fis = new FileInputStream(file);
                BufferedReader br = new BufferedReader(new InputStreamReader(fis));
                br = new BufferedReader(new InputStreamReader(fis));
                String read;
                while ((read = br.readLine()) != null) {
                    text.append(read).append(NEW_LINE);
                }
            } catch (IOException ex) {
                String error = ex.getMessage();
                System.out.println(error);
            }
        }

    Le pom.xml :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
     
     
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>org..........morphar</groupId>
        <artifactId>Morphar</artifactId>
        <packaging>jar</packaging>
        <version>1.0-SNAPSHOT</version>
        <name>Morphar</name>
        <url>http://maven.apache.org</url>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.0.2</version>
                    <configuration>
                        <source>1.6</source>
                        <target>1.6</target>
                        <encoding>${project.build.sourceEncoding}</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <encoding>${project.build.sourceEncoding}</encoding>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <repositories>
            <repository>
                <url>http://download.java.net/maven/2/</url>
                <id>beans-binding</id>
                <layout>default</layout>
                <name>Repository for library Library[beans-binding]</name>
     
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
     
            <repository>
                <id>repo objectweb</id>
                <url>http://maven.objectweb.org/maven2-snapshot</url>
                <releases>
                    <enabled>false</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
            </repository>
        </repositories>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.8.1</version>
                <scope>test</scope>
            </dependency>
     
     
        <!-- Spring framework -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
                <version>2.5.6</version>
            </dependency>
            <dependency>
                <groupId>org.jdesktop</groupId>
                <artifactId>beansbinding</artifactId>
                <version>1.2.1</version>
            </dependency>
     
            <!-- Shell library -->
            <dependency>
                <groupId>com.developpez.adiguba</groupId>
                <artifactId>Shell</artifactId>
                <version>1.0.0</version>
            </dependency>
     
    	<!-- Log4J -->
     
    	<dependency>
    		  <groupId>log4j</groupId>
    		  <artifactId>log4j</artifactId>
    		  <version>1.2.15</version>
    		  <scope>provided</scope>
     
    		  <exclusions>
    			<exclusion>
    			  <groupId>javax.mail</groupId>
    			  <artifactId>mail</artifactId>
    			</exclusion>
    			<exclusion>
    			  <groupId>javax.jms</groupId>
    			  <artifactId>jms</artifactId>
    			</exclusion>
    			<exclusion>
    			  <groupId>com.sun.jdmk</groupId>
    			  <artifactId>jmxtools</artifactId>
    			</exclusion>
    			<exclusion>
    			  <groupId>com.sun.jmx</groupId>
    			  <artifactId>jmxri</artifactId>
    			</exclusion>
    		  </exclusions>
     
    	</dependency>
     
     
        </dependencies>
        <properties>
            <project.build.sourceEncoding>windows-1256</project.build.sourceEncoding>
        </properties>
    </project>

    A la base l'encode dans le pom.xml était en UTF-8, j'ai donc essayé windows-1256 mais toujours le même problème.

    Et un fichier d'un texte en arabe pour les tests.

    voilà l'affichage que j'obtient mais commençant par la droite :

    ÇáÈÑåÇä ÇáÃæá: æÌæÏ Çáßæä æÇáÅäÓÇä æÇáÍíÇÉ:
    Ýåí ÃÔíÇÁ ÍÇÏËÉ áåÇ ÈÏÇíÉ æäåÇíÉ¡ æãÍÊÇÌÉ Åáì ÛíÑåÇ.
    æÇáÍÇÏË æÇáãÍÊÇÌ Åáì ÛíÑå áÇ ÈÏ Ãäå ãÎáæÞ¡ æÇáãÎáæÞ áÇ ÈÏ áå ãä ÎÇáÞ¡
    æåÐÇ ÇáÎÇáÞ ÇáÚÙíã åæ Çááå. æÇááå åæ ÇáÐí ÃÎÈÑ Úä äÝÓå ÇáãÞÏÓÉ ÈÃäå ÇáÎÇáÞ ÇáãÏÈÑ áÌãíÚ ÇáßÇÆäÇÊ¡
    æåÐÇ ÇáÅÎÈÇÑ ÌÇÁ ãä Çááå ÊÚÇáì Ýí ßÊÈå ÇáÊí ÃäÒáåÇ Úáì ÑÓáå.
    ÇÚáã ÃíåÇ ÇáÅäÓÇä ÇáÚÇÞá Ãä ÑÈß ÇáÐí ÎáÞß ãä ÇáÚÏã æÑÈÇß ÈÇáäÚã åæ Çááå ÑÈ ÇáÚÇáãíä.
    æÇáÚÞáÇÁ ÇáãÄãäæä ÈÇááå ÊÚÇáì áã íÑæå ÈÃÚíäåã¡ æáßäåã ÑÃæÇ ÇáÈÑÇåíä ÇáÏÇáÉ Úáì æÌæÏå¡
    æÚáì Ãäå ÇáÎÇáÞ ÇáãÏÈÑ áÌãíÚ ÇáßÇÆäÇÊ ÝÚÑÝæå ÈåÇ. æãä åÐå ÇáÈÑÇåíä
    L'affichage exacte ne se fait que si je paramètre le système en arabe, et le même code fonctionne parfaitement quelque soit la lanque du système dans un projet simple sans maven (oui je sais je me répète).
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedReader br = new BufferedReader(new InputStreamReader(fis));
    vous devez préciser l'encodage du fichier, sinon vous utiliserez l'encodage "plateforme défaut" qui en pratique ne sert à rien.

    Exemple, si le fichier est en utf-8:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedReader br = new BufferedReader(new InputStreamReader(fis,"UTF-8"));
    si le fichier est en windows-1256:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BufferedReader br = new BufferedReader(new InputStreamReader(fis,"WINDOWS-1256")); 
    // en supposant que votre jvm gère cet encodage, pas garanti!! Mieux vaux utiliser quelque chose de standard comme l'utf-8

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

Discussions similaires

  1. Probleme d'encodage des caractères spéciaux
    Par pacoulitou24 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 20/06/2006, 16h47
  2. Problème d'encodage
    Par Arnaud F. dans le forum Administration système
    Réponses: 5
    Dernier message: 26/05/2006, 22h56
  3. Problème d'encodage des caractères sous debian
    Par HNT dans le forum Administration système
    Réponses: 2
    Dernier message: 05/04/2006, 11h07
  4. probleme d'encodage
    Par iwky dans le forum Général Python
    Réponses: 4
    Dernier message: 24/03/2006, 20h30
  5. Probleme avec encodage de simple quote
    Par linkowich dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2005, 13h16

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