Kürzlich mit AJAX zum Anfordern von SpringMVC -Hintergrund zur Abfrage der MySQL -Datenbank zeigt die Seite verstopfte chinesische Code an
Ursprünglich in mybatis wie folgt konfiguriert
<select id = "queryContentById" resultType = "java.lang.String" ParameterType = "String"> Text aus Nachrichten auswählen, wobei ID =#{o} </select>
Das Textfeld der Tabellennachrichten ist vom Typ Blob
Der auf diese Weise gefundene Textwert wird immer in verstümmelter Code in der Konsole angezeigt.
Danach suchte Google nach relevantem Ergebnistyp = Blob -verwandter Inhalt ohne Erfolg, so dass es in resultType = "java.util.map" und geändert wurde und "und
byte [] b = (byte []) map.get ("text"); String s = new String (b, "utf-8");
Drucken Sie S aus, und der chinesische Text wird zu diesem Zeitpunkt normalerweise angezeigt, aber die Seitenanzeige ist immer noch verstümmelt.
Daher handelt es sich um eine Ajax -Anfrage
Content-typetext/html; charset = iSO-8859-1
Da die Datenbank einheitlich als UTF-8 codiert wird, werden die Informationen zur Antwortheader geändert
@RequestMapping (value = "/queryContentById", method = requestMethod.get, produziert = "text/plain; charSet = utf-8") public @ResponDBODY SPRING QueryContentById (@RequestParam ("ID") String-ID) löst SQLEXception, unbeleuchteteCodingEcodingException ("id") SQLEXception, unübertragungsgemäßeCodingExceptionException aus. {MAP = (MAP) NDRService.QueryContentById (ID); ;}
Schauen wir uns ein anderes Beispielproblem an
1. Die Controller von SpringMVC erhält einen verstümmelten Code:
(1) Fügen Sie web.xml einen Zeichensatzfilter hinzu:
Kopieren Sie den Code wie folgt: <!-Springzeichen-Set Filter-> <Filter> <Filter-name> SpringCodingFilter </Filter-Name> <filter-Klasse> org.springframework.web.filter.Character codingFilter </filter -class> <init-param> <param-name> codierung </param-name> <param-value> utf-8 </param-value> </init-param> <init-param> <param-name> ForceCoding </param-name> <param-value> true </param-value> </init-param> </filter> <filter-mapping> <filter-name> feencodingfilter </filter-name> <url-p attern>/*</url-muster> </filtermapping>
(2) auf JSP und anderen Seiten ändern: charset = utf-8 "und pageCoding =" utf-8 "
2. Der Controller liest die richtigen Chinesen, aber nachdem er sie in der Datenbank gespeichert hat, wird es "??".
(1) Ändern Sie die Datenbankverbindung jdbc_url = jdbc: mysql: // localhost: 3306/myBatistest? UseUnicode = yes & charakteristischesCoding = utf8 ("&": bedeutet "&" in der XML -Datei).
(2) Ändern Sie den Zeichensatz der Datenbank in UTF-8: Öffnen Sie my.ini im Stammverzeichnis von MySQL (MySQL5.6 ist my-default.ini, und kopieren Sie sie als my.ini) und fügen Sie sie in die hinzu Spezifischer Ort unten (oder geändert):
Die Codekopie lautet wie folgt: [Mysqld] Zeichen-set-server = utf8 [client] Standard-Charakter-Set = Utf8 [MySQL] Standard-Charakter-Set = Utf8
Es gibt kein Problem damit, es auf meine Seite zu setzen.
Zusammenfassung:
Normalerweise wird das Problem des chinesischen verstümmelten Codes durch falsche Zeichen-Codierungseinstellungen verursacht. Schließlich wurde das Problem gelöst.