Maison > php教程 > PHP开发 > le corps du texte

Solution au problème des caractères chinois tronqués dans MySQL exploité par jsp et servlet

高洛峰
Libérer: 2016-12-29 17:05:50
original
1290 Les gens l'ont consulté

Tout d'abord, regardons où les caractères tronqués commencent à apparaître. Tant que l'encodage est unifié, il n'y aura pas de caractères tronqués comme exemple. et expliquez en détail :

1. Si le code tronqué apparaît à partir de la page jsp, ajoutez ce qui suit à la page d'en-tête jsp :
<%@ page language="java" pageEncoding="UTF-. 8" %>
Ajoutez la balise dans la balise head.

2. Si des caractères tronqués apparaissent dans la servlet, il existe deux méthodes :
La première consiste à ajouter
request.setCharacterEncoding(" à l'en-tête des méthodes doget et doPost dans chaque servlet UTF- 8″);
La deuxième option est la plus sûre, une fois pour toutes, qui consiste à écrire une classe de filtre dédiée, également appelée internationalisation. Le nom de la classe est SetCharacterEncodingFilter et le contenu est le suivant

package com.sharep.filter;//包名
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class SetCharacterEncodingFilter implements Filter
{
 protected String encoding = null;
 protected FilterConfig filterConfig = null;
 protected boolean ignore = true;
 public void init(FilterConfig filterConfig) throws ServletException
 {
  this.filterConfig = filterConfig;
  this.encoding = filterConfig.getInitParameter("encoding");
  String value = filterConfig.getInitParameter("ignore");
  if (value == null)
   this.ignore = true;
  else if (value.equalsIgnoreCase("true"))
   this.ignore = true;
  else
   this.ignore = false;
 }
 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException
 {

  if (ignore || (request.getCharacterEncoding() == null))
  {
   String encoding = selectEncoding(request);
   if (encoding != null)
    request.setCharacterEncoding(encoding);
  }
  chain.doFilter(request, response);
 }
 public void destroy()
 {
  this.encoding = null;
  this.filterConfig = null;
 }
 protected String selectEncoding(ServletRequest request)
 {
  return (this.encoding);
 }
}
Copier après la connexion
<. 🎜>Puis dans web-inf Ajoutez le code suivant à web.xml :

<filter>
  <filter-name>SetCharacterEncoding</filter-name>
  <filter-class>com.young.filter.SetCharacterEncodingFilter</filter-class>//注意这里是类名,要有完整包名
  <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>
 </filter>

 <filter-mapping>
  <filter-name>SetCharacterEncoding</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
Copier après la connexion
C'est fait


S'il y a encore des caractères tronqués, c'est un problème avec le mysql. base de données

1) Assurez-vous que le codage de la base de données est UTF-8 lors de la création de la base de données. Il est préférable de spécifier le format de codage dans chaque table. Le mysql par défaut est latin1
2) Si la version mysql. est 4.x ou supérieur, les caractères tronqués apparaissent toujours dans la base de données. Il existe deux solutions :
La première consiste à spécifier la méthode d'encodage dans le code pour se connecter à la base de données :

String url = “jdbc:mysql://localhost:3306/test2?autoReconnect=true&useUnicode=true&characterEncoding=gbk&mysqlEncoding=utf8″ ;
Copier après la connexion
Si c'est le cas. ne fonctionne toujours pas, utilisez la commande

show variables like ‘collation_%&#39;;
Copier après la connexion
Vérifiez le jeu de caractères par défaut. S'il ne s'agit pas de utf-8, changez l'encodage correspondant en utf8 dans my.ini (windows) ou my.cnf (. linux), puis redémarrez le serveur mysql.

Plus de jsp et Veuillez faire attention au site Web chinois PHP pour les articles connexes sur les solutions au problème des caractères chinois tronqués dans le fonctionnement des servlets mysql !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!