2016-04-23 5 views
0

Also die Sprache, die ich verwende, ist Java, mit JSP-s und Servlets versuche ich, HTML zu geben, was es drucken sollte, aber es druckt nur Fragezeichen. Meine Daten sind in MySQL. Ich habe versucht, alles in UTF-8 zu ändern, einschließlich der Zeichenkodierungen von Tomcat-, XML- und HTML-Dokumenten, JSPs und MySQL-Workbenches, aber es hat nicht geholfen. Und eine wichtige Notation - die System.out.println(...); Funktion druckt korrekt den Text in der Konsole (wie erwartet). Bitte helfen Sie.Warum zeigt der Browser Fragezeichen aus der MySQL-Datenbank an?

+0

Und der Browser verwendet auch UTF-8? – Tom

+0

Ja ist es tatsächlich –

+0

Ein Fragezeichen pro String? Oder viele? Zwei verschiedene Fälle. –

Antwort

1
  • Die Bytes im Client müssen utf8-codiert sein.
  • Die Verbindung muss diese Tatsache feststellen. Für Servolets resource.setContentType ("text/html;charset=utf-8");. Die Tabellen/Spalten müssen CHARACTER SET utf8 (oder utf8mb4) sein.
  • Die Ausgabe muss utf8 deklarieren. Für JSP: <%@ page contentType="text/html; charset=UTF-8" %>

Für mehrere Fragezeichen liegt der übliche Fehler in der Tabellendefinition. Alternativ könnten die Quellbytes und die Verbindung fehlerhaft sein.

Um zu überprüfen, was in der Tabelle ist, geben Sie bitte die Ausgabe von dieser für einige nicht-englischen Zeichen (e):

SELECT col, HEX(col) FROM ... 
+0

Die Ausgabe der Select col. hex (col) from ... war 'D588D59ED5BE20D5A720D5A3D680D5A5D5AC203C3CD580D5A1D680D5A9D5A1D5A3D5B8D5B2D5AB20D5B3D5A1D5B4D683D5B8D680D5A4D5B6D5A5D680D5A83E3E3A' für 1 der Einträge. Was kann ich jetzt annehmen? –

+0

Alle 4 Punkte, die Sie erwähnt haben, wurden mit einigen Unterschieden gemacht, recource.contentType() bedeutet das response.contentType()? Auch utf-8_general_ci wird in der MySQL-Workbench verwendet. –

+0

Das sieht nach armenischen Zeichen aus utf8 aus. Die Daten werden also 'richtig' gespeichert. Also, schauen Sie sich die Ausgabeseite an. Wenn Sie hex von Java bekommen können, sehen Sie, ob es auch wie 'D5xx' aussieht. Und schauen Sie sich die HTML-Ausgabe an, um zu sehen, ob dort 'charset = UTF-8' steht, wahrscheinlich in einem' meta'-Tag in der Nähe des Anfangs. –

Verwandte Themen