Bonsoir tout le monde
Je développe une application web EJB 3 avec base de donnée Mysql.
J'ai suivi toutes les étapes nécessaires pour la gestion des caractères spéciaux (je pense :p):
<?xml version='1.0' encoding='UTF-8' ?> dans mes pages XHTML
Création de la classe EncodingFilter
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
|
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.negsyst.encoding;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
*
* @author FFOKOU
*/
public class EncodeFilter implements Filter {
@SuppressWarnings("unused")
private FilterConfig filterConfig = null;
@Override
public void destroy() {
this.filterConfig = null;
}
@Override
public void doFilter(final ServletRequest request, final ServletResponse response, FilterChain chain) throws IOException, ServletException {
// Setting the character set for the request
request.setCharacterEncoding("UTF-8");
// pass the request on
chain.doFilter(request, response);
// Setting the character set for the response
response.setContentType("text/html; charset=UTF-8");
}
@Override
public void init(final FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
} |
Déclaration de filter dans le fichier web.xml
Côté base de donnée Mysql le Charset est bien UTF8 Collation "utf8_general_ci"
Jusque là tout va bien. Les caractères spéciaux sont bien gérés et enregistrés dans ma base de données.
Les choses dégénèrent quand je fait un "insert" directement à partir du tier "EJB" et non plus à partir de mes interfaces dans le "WAR".
Les caractères spéciaux sont alors transformé
"ééééé ((ç êaaa" devient "ééééé ((ç êaaa"
Comment appliquer le "filter" côté serveur?
Merci d'avance, bonne soirée
Partager