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

BIRT Discussion :

Probleme avec les caracteres speciaux


Sujet :

BIRT

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 77
    Points : 56
    Points
    56
    Par défaut Probleme avec les caracteres speciaux
    Bonjour,

    tout d'abord, dsl pour les accents, j'ai un peu de mal avec le qwerty :/

    Maintenant, mon probleme : j'ai un soucis avec un formulaire qui n'arrive pas a m'afficher des 'Delta' correctement.

    Le probleme ne vient pas du rapport, parce que lorsque je le lance avec le Viewer propose comme exemple, les delta sont correctement affiches.

    Par contre, lorsque c est mon application qui le charge, ca bug...

    je vous montre mon code, si jamais vous voyez qqch...
    Il est base sur cet exemple :
    http://onjava.com/pub/a/onjava/2006/...rt.html?page=2

    Mon BirtEngine est le meme.
    Par contre, la methode doGet de mon WebReport change :

    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
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
     
    		// get report name and launch the engine
    		resp.setContentType("text/html");
    		// resp.setContentType( "application/pdf" );
    		// resp.setHeader ("Content-Disposition","inline; filename=test.pdf");
    		String reportName = req.getParameter("ReportName");
     		ServletContext sc = req.getSession().getServletContext();
     		this.birtReportEngine = BirtEngine.getBirtEngine(sc);
     
    		// setup image directory
    		HTMLRenderContext renderContext = new HTMLRenderContext();
    		renderContext.setBaseImageURL(req.getContextPath() + "/images");
    		renderContext.setBaseURL(req.getContextPath());
    		renderContext.setImageDirectory(sc.getRealPath("/images"));
     
    		HashMap<String, HTMLRenderContext> contextMap = new HashMap<String, HTMLRenderContext>();
    		contextMap.put(EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT,
    				renderContext); 
     
    		IReportRunnable design;
    		try {
    			// Open report design
    			design = birtReportEngine.openReportDesign(sc
    					.getRealPath("/Reports")
    					+ "/" + reportName);
    			// create task to run and render report
    			IRunAndRenderTask task = birtReportEngine
    					.createRunAndRenderTask(design);
    			task.setAppContext(contextMap);
     
    			// set output options
    			HTMLRenderOption options = new HTMLRenderOption();
    			options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
    			// options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_PDF);
    			options.setOutputStream(resp.getOutputStream());
     
    			options.setImageHandler(new HTMLServerImageHandler());
    			options.setBaseImageURL(req.getContextPath() + "/images");
    			options.setImageDirectory(sc.getRealPath("/images"));
    			task.setRenderOption(options);
     
    			task.setParameterValue("From_Date", new java.sql.Date(formatter.parse(req.getParameter("From_Date")).getTime()));
    			task.setParameterValue("To_Date", new java.sql.Date(formatter.parse(req.getParameter("To_Date")).getTime()));
     
    			// run report
    			task.run();
    			task.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    			throw new ServletException(e);
    		}
    	}
    Mon Rapport :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <structure>
         <property name="name">delta</property>
         <text-property name="displayName">delta</text-property>
         <expression name="expression" type="javascript">"Δ : " + dataSetRow["delta"] + " EUR"</expression>
         <property name="dataType">string</property>
    </structure>
    (note : en realite, il n'y a pas le code '&amp;#916;' mais bien un Delta : Δ)

    Sinon, je tourne sous jboss 5.0.1, avec un serveur mysql, et j'utilise la derniere version de Birt (telechargee il y a une semaine).

    Dites-moi s'il vous faut plus de details.

    Merci par avance !

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    En générant sous quel format tu as ce problème ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 77
    Points : 56
    Points
    56
    Par défaut
    Je ne comprends pas trop la question.

    Normalement, mes fichiers sont en utf-8.
    je genere une page HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);
    et sinon, j'ai aussi ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IReportEngineFactory factory = (IReportEngineFactory) Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY)
    Je ne sais pas trop ou je dois recuperer l'information que tu me demandes :/

    Mais merci de t'interesser au sujet!

  4. #4
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    En fait, il existe plusieurs formats de sortie pour BIRT : HTML, PDF, XLS, etc. (Mais j'aurais pu un peu mieux lire ton premier message )

    Est-ce que le delta est extrait d'un fichier properties ou est directement intégré au fichier ?

    Comment le caractère est-il affiché ? Dans quel navigateur ? Tu essayes avec le même navigateur quand tu es avec le Viewer ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 77
    Points : 56
    Points
    56
    Par défaut
    Oui, il me semblait bien aussi que c etait precise :p

    Le Delta est directement ecrit dans le fichier (cf mon premier post) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <structure>
         <property name="name">delta</property>
         <text-property name="displayName">delta</text-property>
         <expression name="expression" type="javascript">"Δ : " + dataSetRow["delta"] + " EUR"</expression>
         <property name="dataType">string</property>
    </structure>
    (note : en realite, il n'y a pas le code '&amp;#916;' mais bien un Delta : Δ)
    Pour le Viewer et mon appli, je les ai testes dans les memes conditions : firefox.
    Pour le Viewer, il est affiche comme le Delta grec. Pour mon application, il est affiche comme ca : Î".

    Je pense qvoir repondu a toutes tes questions :p

  6. #6
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Quand tu lances ton rapport avec le WebViewer c'est en frameset ou non ? (En gros, à quoi ressemble ton URL de lancement du rapport ? Est-ce que tu as une barre d'outils avec l'affichage de celui-ci ?)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 77
    Points : 56
    Points
    56
    Par défaut
    Lol,
    tu as tres bien compris comment me parler !

    Pour le Viewer, il y a la barre en haut.
    Pour mon appli, elle n'y est pas.

    En fait, j'ai un formulaire dans lequel je rentre certains parametres de mon application. Puis je les transmet a ma servlet (dont j'ai copie le contenu de la methode doGet plus haut) qui s'occupe de generer le rapport.

  8. #8
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Ah voilà, c'est là qu'il y a une différence et qui fait que l'affichage est différent.

    Par défaut, Firefox prendra l'encodage en fonction de ton pays (je crois), par exemple, moi c'est ISO-8859-1.
    Mais tes caractères nécessitent un affichage en UTF-8.

    Or, lorsque tu lances le viewer et que ton rapport est compris dans la frameset (avec barre d'outils), il force l'encodage, du fait que le rapport est compris dans une autre page.

    Il faut donc que toi aussi tu forces l'encodage d'affichage de ta page.

    Essaye de rajouter ceci :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    option.setUrlEncoding("UTF-8");

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 77
    Points : 56
    Points
    56
    Par défaut
    Bien vu.
    Lorsque je change l'encodage a la main dans firefox, ca passe sans pb.

    Par contre, le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    options.setUrlEncoding("UTF-8")
    ne marche pas

    Ce qui est etrange, parce que j ai un autre formulaire qui lui s'affiche sans pb en utf-8... Mais dans son cas, c'est une image qui est generee/affichee.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 77
    Points : 56
    Points
    56
    Par défaut
    J'ai suivi ta piste et j'ai finalement trouvé le fin mot de l'histoire.

    Il manquait en fait un petit détail. Il fallait définir l'encodage de la réponse en utf-8 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resp.setContentType("text/html;charset=utf-8")
    Merci pour ton efficacité/rapidité !

  11. #11
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Effectivement, mais ceci n'est plus un problème lié à BIRT en effet

    BIRT gère assez bien l'encodage et normalement, par défaut, c'est déjà du UTF-8.

    Bon bref, félicitations, tu as trouvé !

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

Discussions similaires

  1. [Encodage] probleme avec les caracteres speciaux
    Par Akramweb dans le forum Langage
    Réponses: 3
    Dernier message: 27/12/2010, 11h27
  2. Problème avec des caractères spéciaux dans une chaine
    Par thibaut06 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 20/11/2006, 16h46
  3. Probleme avec les caracteres speciaux
    Par flox dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 29/05/2006, 15h21
  4. Problème avec les caractères accentues
    Par newnew dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 15/10/2004, 13h58
  5. Réponses: 12
    Dernier message: 30/07/2004, 15h43

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