Heim > php教程 > PHP开发 > Lösung für das Problem verstümmelter chinesischer Zeichen in MySQL, das von JSP und Servlet betrieben wird

Lösung für das Problem verstümmelter chinesischer Zeichen in MySQL, das von JSP und Servlet betrieben wird

高洛峰
Freigeben: 2016-12-29 17:05:50
Original
1322 Leute haben es durchsucht

Schauen wir uns zunächst an, wo die verstümmelten Zeichen auftauchen. Solange die Kodierung einheitlich ist, wird es keine verstümmelten Zeichen geben (was meiner Meinung nach das Beste ist). und im Detail erklären:

1. Wenn der verstümmelte Code auf der JSP-Seite erscheint:
<%@ page language="java" pageEncoding="UTF-8" %. >
Fügen Sie das Tag im Head-Tag hinzu.

2. Wenn verstümmelte Zeichen im Servlet erscheinen, gibt es zwei Methoden:
Eine besteht darin,
request.setCharacterEncoding(" zum Header der Doget- und doPost-Methoden in jedem Servlet-UTF hinzuzufügen. 8″);
Die zweite Option ist ein für alle Mal die sicherste, nämlich das Schreiben einer dedizierten Filterklasse, auch Internationalisierung genannt. Der Klassenname ist SetCharacterEncodingFilter und der Inhalt ist wie folgt

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);
 }
}
Nach dem Login kopieren

Dann fügen Sie in web-inf den folgenden Code zu web.xml hinzu:

<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>
Nach dem Login kopieren

Das ist es!

3. Wenn immer noch verstümmelte Zeichen vorhanden sind, liegt ein Problem mit der MySQL-Datenbank vor

1) Stellen Sie sicher, dass die Datenbankkodierung UTF-8 ist, wenn Sie die Datenbank erstellen. Am besten geben Sie das Kodierungsformat in jeder Tabelle an. Das Standard-MySQL ist latin1
2) Wenn die MySQL-Version ist 4.x oder höher erscheinen immer noch verstümmelte Zeichen in der Datenbank. Es gibt zwei Lösungen:
Eine besteht darin, die Kodierungsmethode im Code anzugeben, um eine Verbindung zur Datenbank herzustellen:

String url = “jdbc:mysql://localhost:3306/test2?autoReconnect=true&useUnicode=true&characterEncoding=gbk&mysqlEncoding=utf8″ ;
Nach dem Login kopieren

Wenn dies immer noch der Fall ist Funktioniert nicht, verwenden Sie den Befehl

show variables like ‘collation_%&#39;;
Nach dem Login kopieren

Überprüfen Sie den Standardzeichensatz. Wenn es nicht utf-8 ist, ändern Sie die entsprechende Kodierung in my.ini (Windows) oder my.cnf (Linux). ) und starten Sie dann den MySQL-Server neu.

Mehr JSP und Bitte beachten Sie die PHP-Chinese-Website für verwandte Artikel zu Lösungen für das Problem chinesischer verstümmelter Zeichen im Servlet-Betrieb von MySQL!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage