Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JSP-Codierung beim Einfügen von nicht-englischem Text in die MySQL-Datenbank

Dies wird nur passieren, wenn sich beide Seiten der Unterschiede in der Zeichencodierung auf jeder Seite vollkommen bewusst sind. Jedes Zeichen, das nicht von der auf der anderen Seite verwendeten Zeichenkodierung abgedeckt wird, wird durch ein Fragezeichen ? ersetzt . Sonst hätten Sie Mojibake gesehen .

In diesem speziellen Fall sind dies die Java-Seite und die Datenbankseite mit dem JDBC-Treiber als Vermittler. Um dies zu beheben, müssen Sie dem JDBC-Treiber mitteilen, in welcher Codierung diese Zeichen enthalten sind. Sie können dies tun, indem Sie useUnicode=true&characterEncoding=UTF-8 festlegen Parameter in der JDBC-Verbindungs-URL.

jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8

Je nachdem, wie Sie die Parameter vom Client zum Server senden, müssen Sie dann möglicherweise auch die Anforderungscodierung korrigieren. Angesichts der Tatsache, dass Sie Mojibake sehen, wenn Sie request.setCharacterEncoding("UTF-8") entfernen , verwenden Sie POST. Dieser Teil ist also in Ordnung.

Für den Fall, dass Sie, wenn Sie GET zum Senden der Parameter verwenden würden, die URI-Codierung auf der Serverseite konfigurieren müssten. Es ist unklar, welchen Server Sie verwenden, aber im Fall von beispielsweise Tomcat müssen Sie den <Connector> bearbeiten Eintrag in /conf/server.xml wie folgt:

<Connector ... URIEncoding="UTF-8">

Siehe auch: