Comment garantir l'encodage UTF-8 dans les applications Web Java
Pour activer l'encodage UTF-8 dans votre application Web Java, suivez ces étapes :
1. Configurez le fichier server.xml de Tomcat
Ajoutez la ligne suivante pour activer l'encodage UTF-8 pour les paramètres d'URL (requête GET) :
<Connector port="8080" ... URIEncoding="UTF-8" ... />
2. Implémenter un filtre de jeu de caractères
Définissez un filtre pour forcer l'application Web à gérer toutes les demandes et réponses encodées en UTF-8 :
import javax.servlet.*; public class CharsetFilter implements Filter { private String encoding = "UTF-8"; @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain next) throws ServletException, IOException { request.setCharacterEncoding(encoding); response.setContentType("text/html; charset=UTF-8"); response.setCharacterEncoding("UTF-8"); next.doFilter(request, response); } }
3. Ajoutez le filtre à web.xml
Enregistrez le filtre dans le descripteur de déploiement :
<filter> <filter-name>CharsetFilter</filter-name> <filter-class>fi.foo.filters.CharsetFilter</filter-class> </filter> <filter-mapping> <filter-name>CharsetFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
4. Définir l'encodage de la page JSP
Spécifiez l'encodage de la page dans web.xml :
<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config>
5. Utiliser les balises HTML-Meta
Indiquez l'encodage utilisé par les pages HTML :
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
6. Configurer la connexion JDBC
Spécifiez l'encodage UTF-8 pour la connexion à la base de données :
<Resource ... url="jdbc:mysql://localhost:3306/ID_development?useEncoding=true&amp;characterEncoding=UTF-8" ... />
7. Créer des tables avec un classement UTF-8
Assurez-vous que toutes les tables de base de données ont un classement UTF-8 :
CREATE TABLE `Users` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(30) collate utf8_swedish_ci default NULL PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci ROW_FORMAT=DYNAMIC;
8. Vérifiez la configuration du serveur MySQL
Vérifiez que le serveur est configuré pour utiliser UTF-8 comme jeu de caractères par défaut :
[client] default-character-set=utf8 [mysql] default-character-set=utf8
Remarque :
Alors que les caractères cyrilliques comme "ж" peuvent être traités via des requêtes GET avec encodage UTF-8, des caractères comme "ä" peuvent être codés en Latin1 (ISO-8859-1), provoquant des incohérences.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!