Je développe une application qui doit fonctionner dans différentes langues (allemand, espagnol, etc.). L'application utilise une base de données Oracle. J'ai des processus d'affaires CRUD et j'ai les vues standard (créer, modifier, afficher, liste). Aucun problème pour créer, afficher et lister tout enregistrement contenant des caractères spéciaux comme ä, ö, ü, etc. Mais lorsque je modifie une entrée contenant l'un de ces caractères, j'obtiens la version codée version encodée, c'est-à-dire & auml ; au lieu de ä & ouml ; au lieu de ö & uuml ; au lieu de ü
et ainsi de suite.
Avez-vous une idée de la façon de résoudre ce problème ?
Merci !
UPDATE Merci pour votre aide. Je vais décrire le scénario complet :
J'ai une application web écrite en grails (groovy on grails). Pour le développement, j'utilise Jetty comme serveur et Oracle 10g. Pour les tests et la production, j'utilise Tomcat 6.0.18 et Oracle 10g. La version de Java est 1.6.0_02.
J'ai de nombreux processus CRUD (créer, récupérer, mettre à jour, supprimer). L'application est multilingue. C'est-à-dire que les lettres (caractères) ä, ö, ü, ß, á, é, í, ó, ú lettres (caractères) doivent être autorisés comme contenu.
Les vues sont écrites en gsp. J'utilise des vues .gsp standard (create, edit, show, list). Aucun problème avec create, show, list. C'est à dire que si sous la vue create je tape un mot utilisant ces caractères spéciaux, il sera affiché ou listé. correctement dans les vues show.gsp ou list.gsp.
Le problème se pose lors de l'édition d'un enregistrement contenant de tels caractères. Au lieu de -disons- ä apparaît dans le champ an & auml ; (c'est l'encodage html de ä).
J'ai les paramètres suivants :
sous Config.groovy grails.views.gsp.encoding="UTF-8" (en anglais) grails.converters.encoding="UTF-8" (en anglais)
Chaque page .gsp possède la balise méta suivante :
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" pageEncoding="UTF-8"/>
Chaque formulaire possède l'attribut suivant :
<g:form accept-charset="UTF-8" method="post" >
Sous Tomcat, j'ai effectué les réglages suivants.
tomcat est démarré avec les options suivantes :
CATALINA_OPTS=-Dfile.encoding=UTF-8
JAVA_OPTS="-Duser.language=de -Duser.country=DE"
Sous web.xml j'ai mis le filtre suivant
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
Sous myApplication/WEB-INF/classes/filters, j'ai copié la classe SetCharacterEncodingFilter.class depuis examples/WEB-INF/classes/filters.
Sous server.xml, j'ai défini le connecteur suivant :
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="UTF-8" />
Le scénario est le suivant : Le serveur reçoit une demande de modification d'un formulaire. Le serveur récupère les informations de la base de données et ensuite, soit la base de données envoie l'information déjà codée en html (je ne pense pas) ou le serveur la code et l'envoie et l'envoie codée au client.
De plus, au niveau de mon contrôleur, je peux voir que l'information récupérée du serveur n'est pas codées en html.
Je ne sais pas quel réglage il faut faire pour résoudre ce problème d'encodage (qui me prend beaucoup, beaucoup de temps et d'efforts). (qui me prend beaucoup, beaucoup de temps et d'efforts).
Merci beaucoup à l'avance.
Luis