Tomcat UTF-8-Ready vorbereiten

Tomcat UTF-8-Ready machen

1. Einführung

UTF-8 ist die in Webanwendungen am häufigsten verwendete Zeichenkodierung. Es unterstützt alle derzeit auf der Welt gesprochenen Sprachen, einschließlich Chinesisch, Koreanisch und Japanisch.

In diesem Artikel demonstrieren wir die gesamte Konfiguration, die erforderlich ist, um UTF-8 in Tomcat sicherzustellen.

2. Konnektorkonfiguration

Ein Connector wartet auf Verbindungen an einem bestimmten Port. Wir müssen sicherstellen, dassall of our Connectors use UTF-8 to encode requests.

Fügen wir den ParameterURIEncoding=”UTF-8″ allen Konnektoren inTOMCAT_ROOT/conf/server.xml hinzu:



3. Zeichensatzfilter

Nach dem Konfigurieren des Connectors ist es an der Zeit, die Webanwendung zu zwingen, alle Anforderungen und Antworten in UTF-8 zu verarbeiten.

Definieren wir eine Klasse mit dem NamenCharacterSetFilter:

public class CharacterSetFilter implements Filter {

    // ...

    public void doFilter(
      ServletRequest request,
      ServletResponse response,
      FilterChain next) throws IOException, ServletException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html; charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        next.doFilter(request, response);
    }

    // ...
}

Wir müssen den Filter zu denweb.xml unserer Anwendung hinzufügen, damit er auf alle Anforderungen und Antworten angewendet wird:


    CharacterSetFilter
    com.example.CharacterSetFilter



    CharacterSetFilter
    /*

4. Server-Seitencodierung

Der andere Teil unserer Webanwendung, den wir konfigurieren müssen, sind Java-Serverseiten.

Diebest way to ensure UTF-8 in server pages is to add this tag at the top of each JSP page:

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>

5. HTML-Seitencodierung

Während die Serverseitencodierung JVM mitteilt, wie Seitenzeichen zu behandeln sind, teilt die HTML-Seitencodierung dem Browser mit, wie Seitenzeichen zu behandeln sind.

Wir sollten dieses<meta>-Tag im Abschnitthead aller HTML-Seiten hinzufügen:

6. MySQL Server Konfiguration

Nachdem unser Tomcat konfiguriert ist, ist es Zeit, die Datenbank zu konfigurieren.

Wir gehen davon aus, dass ein MySQL-Server verwendet wird. Die Konfigurationsdatei heißt unter Windowsmy.ini und unter Linuxmy.cnf.

Wir müssen die Konfigurationsdatei finden, nach diesen Parametern suchen und sie entsprechend bearbeiten:

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

Wir müssen den MySQL-Server neu starten, damit die Änderungen wirksam werden.

7. MySQL-Datenbankkonfiguration

Die Zeichensatzkonfiguration von MySQL Server wird nur auf neue Datenbanken angewendet. Wir müssen alte manuell migrieren. Dies kann leicht mit wenigen Befehlen erreicht werden.

Für jede Datenbank:

ALTER DATABASE database_name CHARACTER SET = utf8mb4
    COLLATE = utf8mb4_unicode_ci;

Für jeden Tisch:

ALTER TABLE table_name CONVERT TO
    CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Für jede SpalteVARCHAR oderTEXT:

ALTER TABLE table_name CHANGE column_name column_name
    VARCHAR(69) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Wenn wir Daten mit UTF-8-Zeichen in Datenbankabfragen übergeben, müssen wir sicherstellen, dass jede hergestellte Datenbankverbindung UTF-8-Codierungskonform ist.

Bei einer JDBC-basierten Verbindung kann dies mit der folgenden Verbindungs-URL erreicht werden:

jdbc:mysql://localhost:3306/?useUnicode=yes;characterEncoding=UTF-8

8. Fazit

In diesem Artikel wurde gezeigt, wie sichergestellt wird, dass Tomcat die UTF-8-Codierung verwendet.