Remarque: Toutes les informations de texte stockées dans un ordinateur enregistrent les caractères que nous connaissons (caractères chinois ou anglais) dans une certaine table de codage (0, 1, 0, 1). Le processus binaire des caractères au stockage informatique est le codage, et le processus de la lecture du binaire au texte est appelé décodage. Il existe de nombreuses tables de codage différentes pour le codage des caractères, donc si le format de codage et le format de décodage ne sont pas la même table de code, le code brouillé apparaîtra. Pour éviter le code brouillé, vous devez utiliser la même table de code lors de l'enregistrement et de la lecture.
Il y a souvent des codes brouillés dans la programmation Web Java. Maintenant, permettez-moi d'expliquer en détail comment les définir pour éviter les codes brouillés.
1 Encodage de la page Web
Lorsque vous écrivez une page Web, vous devez spécifier le format de codage de la page Web et utiliser <meta http-equiv = "contenu-type" content = "text / html; charset = utf-8"> pour le spécifier. À l'heure actuelle, lorsque le navigateur lit ou envoie la demande, les données seront enregistrées ou envoyées dans le format de codage spécifié. Le voici sous forme d'UTF-8.
Par exemple, l'extrait de code:
<formulaire action = "/ pro1 / bb" méthode = "post"> nom d'utilisateur: <input type = "text" name = "username"> <br> sexe: mâle <entrée type = "radio" name = "Gender" value = "mâle"> femelle <entrée type = "radio" name = "Gender" value = "femel"> <br> coloriage préféré: <br> Red type = "Checkbox" type = "checkbox" name = "colore" value = "verte"> bleu <input type = "checkbox" name = "colore" value = "bleu"> <br> pays de <lelect name = "country"> <option value = "China"> China </ option> <option value = "us"> us </ option> <option value value = "réinitialiser"> </ form>
2 Données de demande de lecture backend
Dans le servlet du Web Java, afin d'obtenir les données demandées, les données binaires envoyées doivent être décodées en fonction de la table de code correspondante pour obtenir la chaîne lisible par l'homme correspondante. Dans cet exemple, la méthode Post est utilisée, donc lors du traitement de la demande de post, vous devez définir le format de codage avant d'obtenir les paramètres de demande chinoise, sinon le code brouillé se produira. Car le serveur utilise la table de codage ISO-8859-1 par défaut pour le décodage.
Bien sûr, si vous souhaitez produire des caractères chinois dans la sortie, vous devez également utiliser un codage de caractères unifié. Voici UTF-8, le code est le suivant
public void doPost (requête HttpServletRequest, réponse httpservletResponse) lève ServletException, ioException {request.SetcharAtterencoding ("utf-8"); Response.SetContentType ("Text / HTML; charSet = UTF-8"); Printwriter out = réponse.getWriter (); String username = request.getParameter ("nom d'utilisateur"); String Gender = request.getParameter ("Gender"); String [] couleurs = request.getParameTervalues ("Color"); String country = request.getParameter ("country"); out.println ("<! doctype html>"); out.println ("<adread> <ititle> Test Servlet </Title> </A-head>"); out.println ("<porce>"); out.print ("<h1> Ce qui suit est votre entrée </h1>"); out.print ("<p>"); out.print ("votre nom d'utilisateur:" + nom d'utilisateur + "<br>"); Out.print ("Votre sexe:" + genre + "<br>"); Out.print ("Votre couleur préférée:"); pour (String cr: couleurs) {out.print (cr + ""); } out.print ("<br>"); Out.print ("Votre pays:" + pays + "<br>"); out.print ("</p>"); out.println ("</body>"); out.println ("</html>"); }Remarque: request.SetcharAtterencoding ("UTF-8"); ici n'est valide que pour le contenu de l'entité demandant. Les paramètres de demande de la demande sont stockés dans l'entité de demande, et les paramètres de demande de la méthode GET sont placés après l'URL et commencent par un point d'interrogation, et '&' connecter plusieurs paramètres. Donc, si vous souhaitez obtenir les paramètres de la méthode GET, vous devez utiliser le décodage manuel ou utiliser le filtre.
Méthode de décodage manuel, par souci de simplicité, uniquement des décodes de genre, et dans une utilisation réelle, chaque paramètre doit être décodé: String Gender = new String (req.getParameter ("Gender"). GetBytes ("ISO-8859-1"), "UTF-8");
À ce stade, le phénomène des caractères chinois brouillé du côté Web et du serveur peut être parfaitement résolu. Rappelez-vous une chose: une brouette d'une part, c'est parce que l'encodage et le décodage utilisent différentes tables d'encodage. Vous devez utiliser la même table de codage pour résoudre le problème.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.