Ce qui suit propose 4 solutions différentes aux caractères tronqués, qui couvrent essentiellement les différentes situations dans lesquelles des caractères tronqués apparaissent dans le développement Web.
La solution du code tronqué est principalement proposée pour l'environnement de développement java+mysql. Tant que les modifications correspondantes sont apportées, elle peut être utilisée pour résoudre le problème du code tronqué dans différents environnements linguistiques.
1. La page JSP affiche des caractères tronqués
La page d'affichage suivante (display.jsp) apparaît tronquée :
code du programme
<%
out.print("Traitement chinois JSP");
%>
Pour différents serveurs WEB et différentes versions de JDK, les résultats du traitement sont différents. Raison : La méthode d'encodage utilisée par le serveur est différente et le navigateur affiche des résultats différents pour différents caractères. Solution : Spécifiez la méthode d'encodage (gb2312) dans la page JSP, c'est-à-dire ajoutez : <%@ page contentType="text/html; charset=gb2312"%> à la première ligne de la page pour éliminer les caractères tronqués. La page complète est la suivante :
<%@ page contentType="text/html; charset=gb2312"%>
<%
out.print("Traitement chinois JSP");
%>
2. Des caractères tronqués apparaissent lorsque le formulaire est soumis en chinois. Vous trouverez ci-dessous une page de soumission (submit.jsp) avec le code suivant :
Code du programme
.
Voici le code de la page de traitement (process.jsp) :
Code du programme
<%@ page contentType="text/html; charset=gb2312"%>
<%=request.getParameter("name")%>
Si les caractères anglais soumis dans submit.jsp peuvent être affichés correctement, si les caractères chinois sont soumis, des caractères tronqués apparaîtront. Raison : Le navigateur utilise le codage UTF-8 par défaut pour envoyer des requêtes, et les méthodes de codage UTF-8 et GB2312 représentent les caractères différemment, de sorte que les caractères ne peuvent pas être reconnus. Solution : Encodez uniformément la requête via request.seCharacterEncoding("gb2312") pour obtenir un affichage normal du chinois. Le code process.jsp modifié est le suivant :
Code du programme
<%@ page contentType="text/html; charset=gb2312"%>
<%
request.seCharacterEncoding("gb2312");
%>
<%=request.getParameter("name")%>
3. La connexion à la base de données est tronquée.
Tant que tout ce qui concerne le chinois est tronqué, la solution consiste à ajouter useUnicode=true&characterEncoding=GBK à l'URL de la base de données et tout ira bien.
4. L'affichage de la base de données est tronqué
Dans mysql4.1.0, les caractères chinois tronqués apparaîtront dans le type varchar et le type texte, le définir comme attribut binaire peut résoudre le problème chinois. Pour le type texte, une classe de conversion d'encodage doit être utilisée pour le gérer. . L'implémentation est la suivante :
Code du programme.
classe publique Convertir {
/** Convertir le code ISO-8859-1 en GB2312
*/
chaîne statique publique ISOtoGB (chaîne iso) {
Chaîne Go ;
essayer{
if(iso.equals("") || iso == null){
retour "";
}
autre{
iso = iso.trim();
gb = new String(iso.getBytes("ISO-8859-1"),"GB2312");
retourner Go ;
}
}
attraper(Exception e){
System.err.print("Erreur de conversion d'encodage :"+e.getMessage());
retour "";
}
}
}
Compilez-le dans une classe et vous pouvez appeler la méthode statique ISOtoGB() de la classe Convert pour convertir l'encodage.