Bei der heutigen Bereitstellung eines Webservices-Programms ist beim Servlet, das Daten von der Seite abruft, ein verstümmeltes Problem aufgetreten. Im Servlet habe ich den Text request.setCharacterEncoding("GB2312"); hinzugefügt, aber das verstümmelte Problem ist weiterhin aufgetreten.
Finden Sie online Informationen wie folgt: JAVA ist eine Unicode-Kodierung. Sie konvertieren sie zuerst in ISO8859-1 und dann in GBK oder GB2312.
Java-Code
Das ist Chinesisch!
Es gibt eine einfachere Möglichkeit, nämlich die Kodierungskonvertierung direkt auf dem Server festzulegen. Es wird TOMCAT5.0.28 verwendet.
Suchen Sie die Datei SERVER.XML im Verzeichnis ../Tomcat 5.0/conf, öffnen Sie sie mit WordPad und legen Sie sie wie folgt fest:
Fügen Sie einfach ein Attribut hinzu, URIEncoding="GBK"
Der Test ist bestanden und erledigt. Welche Rolle spielt dann der Satz request.setCharacterEncoding("GB2312")? Welche Rolle spielen wir dann?
(1) Die JSP-Seite ist auf Chinesisch, aber wenn man sie betrachtet, ist sie verstümmelt:
Die Lösung besteht darin, die JSP-Seite zu kodieren, wenn JSP in eine Java-Datei konvertiert wird. Wenn Chinesisch direkt in eine JSP eingegeben wird, wird es von JSP als ISO8859 behandelt. 1 ist definitiv ein Problem. Wir können dies anhand der von Jasper generierten Java-Zwischendatei bestätigen.
(2) Wenn Sie das Request-Objekt verwenden, um den vom Kunden übermittelten chinesischen Zeichencode abzurufen, werden verstümmelte Zeichen angezeigt:
Die Lösung besteht darin, einen Filter zu konfigurieren, bei dem es sich um einen Servelet-Filter handelt. Der Code lautet wie folgt:
request.setCharacterEncoding("GBK");
// Kontrolle an den nächsten Filter übergeben
chain.doFilter(Anfrage, Antwort);
}
<filter-mapping></filter-mapping>
<filter-name></filter-name>Zeichenkodierung festlegen
<url-pattern></url-pattern>/*
Es gibt auch die Verarbeitung von Informationen, die chinesische Schriftzeichen enthalten. Der Verarbeitungscode lautet:
Die Lösung ist:
1) Öffnen Sie die Datei server.xml von Tomcat, suchen Sie den Block und fügen Sie die folgende Zeile hinzu:
URIEncoding=“GBK“
Das Ganze sollte wie folgt aussehen:
(4) Es gibt chinesische Zeichen auf der JSP-Seite und chinesische Zeichen auf den Schaltflächen, aber beim Anzeigen der Seite über den Server werden verstümmelte Zeichen angezeigt:
Die Lösung lautet: Erstens sollte der lokalisierte Nachrichtentext nicht direkt in die JSP-Datei eingefügt werden, sondern der Text sollte über das Tag <bean:message> aus dem Ressourcenpaket abgerufen werden. Sie sollten Ihren chinesischen Text in die Datei Application.properties einfügen. Diese Datei wird unter WEB-INF/classes/* abgelegt. Wenn ich beispielsweise zwei Bezeichnungen für Name und Alter auf der Seite habe, muss ich zuerst eine Anwendung erstellen. Eigenschaften. Der Inhalt darin sollte name="name" sein. age = "age", dann lege ich diese Datei unter WEB-INF/classes/properties/ ab, codiere sie dann gemäß der Datei Application.properties und erstelle eine chinesische Ressourcendatei, vorausgesetzt, der Name lautet Application_cn.properties. Der Befehl native2ascii wird im JDK bereitgestellt, der die Konvertierung der Zeichenkodierung realisieren kann. Suchen Sie das Verzeichnis, in dem Sie die Datei „Application.properties“ in der DOS-Umgebung abgelegt haben. Führen Sie den Befehl „Application_cn.properties“ aus, der in GBK codiert ist: „native2ascii ?encoding gbk Application_cn.properties“. Der obige Befehl wird in Zukunft die Datei Application_cn.properties mit folgendem Inhalt generieren: name=u59d3u540d age=u5e74u9f84, konfiguriert in Struts-config.xml: <message-resources parameter="properties.Application_cn"></message-resources>. Zu diesem Zeitpunkt ist im Grunde mehr als die Hälfte fertig. Dann müssen Sie auf der JSP-Seite Folgendes schreiben: <bean:message key=""name"> Dies wird angezeigt Auf der Seite erscheint der chinesische Name, das Gleiche gilt für das Alter und auch die chinesischen Schriftzeichen auf der Schaltfläche werden auf die gleiche Weise verarbeitet.
(5) Der in die Datenbank geschriebene Code ist verstümmelt:
Lösung: Konfigurieren Sie einen Filter, bei dem es sich um einen Servelet-Filter handelt. Der Code ist der gleiche wie beim zweiten Mal.
Wenn Sie über JDBC direkt mit der Datenbank verbunden sind, lautet der Konfigurationscode wie folgt: jdbc:mysql://localhost:3306/workshopdb? useUnicode=true&characterEncoding=GBK, um sicherzustellen, dass der Code in der Datenbank nicht verstümmelt ist.
Wenn Sie eine Verknüpfung über die Datenquelle herstellen, müssen Sie diese zunächst in die von mir erstellte Konfigurationsdatei in Tomcat 5.0.19 schreiben Das Projekt ist Workshop und das Verzeichnis, in dem es abgelegt wird, befindet sich unter webapp. Die Konfigurationsdatei von workshop.xml lautet wie folgt:
<resource name="jdbc/WorkshopDB"></resource>auth="Container"
type="javax.sql.DataSource" />
<resourceparams name="jdbc/WorkshopDB"></resourceparams>
<Parameter></parameter>
<name></name>Fabrik
<value></value>org.apache.commons.dbcp.BasicDataSourceFactory
<Parameter></parameter>
<name></name>maxActive
<Wert></Wert>100
<Parameter></parameter>
<name></name>maxIdle
<Wert></Wert>30
<Parameter></parameter>
<name></name>maxWait
<Wert></Wert>10000
<Parameter></parameter>
<name></name>Benutzername
<Wert></Wert>Stamm
<Parameter></parameter>
<name></name>Passwort
<Wert></Wert>
<Parameter></parameter>
<name></name>driverClassName
<Wert></Wert>com.mysql.jdbc.Driver
<Parameter></parameter>
<name></name>URL
<Wert></Wert>
Achten Sie besonders auf die fett gedruckten Stellen. Wenn Sie es richtig konfigurieren, wird es in der Datenbank auf Chinesisch angezeigt benötigt auch diese Codezeile. Es ist zu beachten, dass einige Mitarbeiter an der Rezeption Dreamver verwenden, um beim Schreiben eines Formulars auf eine Sache zu achten, und zwar auf die Übermittlung von Aktionen in Dreamver Anfrage, und Sie müssen es senden, da es zwei Methoden der JSP-Übermittlung gibt: POST und GET, aber der von diesen beiden Methoden übermittelte Code unterscheidet sich immer noch stark in Bezug auf die Codierung. Dies wird später erklärt. </bean:message>< /bean:message>