Bonjour.
Je développe une plateforme web en JSP, tournant sur mon Mac sous MacOS X 10.3.7 avec Tomcat 5.5.7. J'ai un serveur MySQL (version 4.0.21) tournant également sur le même ordinateur.
Ma plateforme permet à l'utilisateur d'envoyer un message qui doit être stocké sur la base MySQL. C'est là qu'est le problème. En effet, tout fonctionne parfaitement jusqu'à ce que l'utilisateur entre un texte avec des accents. La base n'enregistre à la place des lettres que des points d'interrogation. Il en est de même ensuite à l'affichage.
Je ne comprends pas du tout comment la base interprête les messages qui lui sont envoyés. Le problème est qu'il se peut qu'il y ait des transformations effectuées par le driver JDBC. En effet, dans le terminal, je peux taper un 'é', qui apparaitra sous la forme \303\251 qui représente la séquence des 2 octets en octal du code Unicode correspondant. La base interprête bien un 'é'. J'ai donc essayé de passer mes pages en UTF-8. Là, non seulement la base ne marche plus, mais l'interprétation par le navigateur web des pages fait défaut. J'ai en effet un problème très bizzare : si je choisis manuellement encodage UTF sur la page du formulaire, que j'envoi un 'é', et que je choisis ensuite manuellement UTF sur la page affichant le résultat (la base n'intervient pas au milieu, juste une récupération du paramêtre par un bean), tout fonctionne. Maintenant, si les pages spécifient le format UTF, la page affichant le résultat va afficher les 2 caractères correspondant aux deux octets du code unicode du 'é' comme si elle s'affichait en ISO-8xxx-1 (désolé, j'ai pas le code en tête...).
Si quelqu'un maîtrise ce genre de choses, ça m'intéresserait vraiment. J'ai éventuellement la solution d'utiliser l'encodage latin-1 (le ISO-8xxx-1) et de faire la conversion en codes HTML avant d'écrire dans la base, ce qui aura l'avantage de bien fonctionner sur le site, mais l'inconvénient d'alourdir le stockage dans la base avec du code html inutile.
Merci d'avance
Je développe une plateforme web en JSP, tournant sur mon Mac sous MacOS X 10.3.7 avec Tomcat 5.5.7. J'ai un serveur MySQL (version 4.0.21) tournant également sur le même ordinateur.
Ma plateforme permet à l'utilisateur d'envoyer un message qui doit être stocké sur la base MySQL. C'est là qu'est le problème. En effet, tout fonctionne parfaitement jusqu'à ce que l'utilisateur entre un texte avec des accents. La base n'enregistre à la place des lettres que des points d'interrogation. Il en est de même ensuite à l'affichage.
Je ne comprends pas du tout comment la base interprête les messages qui lui sont envoyés. Le problème est qu'il se peut qu'il y ait des transformations effectuées par le driver JDBC. En effet, dans le terminal, je peux taper un 'é', qui apparaitra sous la forme \303\251 qui représente la séquence des 2 octets en octal du code Unicode correspondant. La base interprête bien un 'é'. J'ai donc essayé de passer mes pages en UTF-8. Là, non seulement la base ne marche plus, mais l'interprétation par le navigateur web des pages fait défaut. J'ai en effet un problème très bizzare : si je choisis manuellement encodage UTF sur la page du formulaire, que j'envoi un 'é', et que je choisis ensuite manuellement UTF sur la page affichant le résultat (la base n'intervient pas au milieu, juste une récupération du paramêtre par un bean), tout fonctionne. Maintenant, si les pages spécifient le format UTF, la page affichant le résultat va afficher les 2 caractères correspondant aux deux octets du code unicode du 'é' comme si elle s'affichait en ISO-8xxx-1 (désolé, j'ai pas le code en tête...).
Si quelqu'un maîtrise ce genre de choses, ça m'intéresserait vraiment. J'ai éventuellement la solution d'utiliser l'encodage latin-1 (le ISO-8xxx-1) et de faire la conversion en codes HTML avant d'écrire dans la base, ce qui aura l'avantage de bien fonctionner sur le site, mais l'inconvénient d'alourdir le stockage dans la base avec du code html inutile.
Merci d'avance