Ursachen und Lösungen für verstümmelte Zeichen in der Java-Sprache
a) Ein auf awt (swing) basierendes grafisches Schnittstellenprogramm zeigt verstümmelte Zeichen auf Chinesisch an
In grafischen Schnittstellenprogrammen, die auf awt (swing) basieren, wird die chinesische Anzeige im Menü normalerweise verstümmelt angezeigt. Der Grund dafür ist im Allgemeinen, dass die JVM die Schriftart für die Anzeige von Chinesisch nicht finden kann Die Schriftarten unter der Originalinstallation und die Distributionsversionen von Linux sind unterschiedlich, und die Pfade und Namen ihrer Schriftarten sind unterschiedlich, sodass die JVM die im Linux-Betriebssystem enthaltenen Schriftarten im Allgemeinen nicht finden kann Finden Sie die im Linux-Betriebssystem enthaltenen Schriftarten. Unter Redflag 6.0 können Sie das Problem beispielsweise mit dem folgenden Befehl lösen:
mkdir /usr/java/jdk1.6.0/jre/lib/fonts/fallback ln -s /usr/share/fonts/chinese/TrueType/*.ttf /usr/java/jdk1.6.0/jre/lib/fonts/fallback
Im Allgemeinen ist es nicht erforderlich, die Schriftartkonfigurationsdatei (fontconfig. OS.Version.properties) im Verzeichnis JRE/lib/.
b) Der System-Client-Browser basierend auf der B/S-Struktur JSP (Servlet) zeigt verstümmelte chinesische Zeichen an.
Die chinesischen Zeichen auf der Seite zeigen verstümmelte Zeichen an.
Für statische Inhalte Wie bei einer HTML-Datei muss der Zeichensatz der Datei nur mit dem im festgelegten Satz übereinstimmen die Datei.
Für dynamische Dateien wie JSP und Servlet müssen sie während des Betriebs kompiliert werden. Die JVM interpretiert die Klassendatei, um die vom Client-Browser benötigte HTML-Datei zu generieren während des Prozesses kompiliert und ausgeführt. Wenn Sie kommerzielle Linux-Distributionen und -Server verwenden, müssen Sie im Allgemeinen nur die JSP- oder Servlet-Datei als UTF-8-Zeichensatz speichern und Stellen Sie es einfach auf UTF-8 ein. Wenn immer noch verstümmelte Zeichen angezeigt werden, können Sie das Problem mit den folgenden Methoden lösen:
① Wenn der Server unabhängig entwickelt wurde, können Sie den Quellcode ändern, um die JVM zum Lesen von Dateien, Schreiben von Dateien und Generieren von HTML-Dateien anzugeben Die vom Client-Browser benötigte Kodierungsmethode beim Konvertieren von Zeichenfolgen und binären Sequenzströmen, wodurch das Problem grundlegend gelöst und die Anpassungsfähigkeit des Servers verbessert wird, und der Code lautet wie folgt:
new BufferedReader(new InputStreamReader(new FileInputStream(jspfile),”GBK”)); new PrintWriter(serfile,”GBK”); new PrintWriter(new OutputStreamWriter(os,”GBK”));
② Natürlich können Sie auch die „Gebietsschema“-Einstellung der JVM in der Eintragsdatei des Servers (d. h. der Datei, die die Hauptunterfunktion enthält) ändern:
Locale.setDefault(new Locale(“zh”,”CN”));
③ Wenn Sie einen kommerziellen Server verwenden, können Sie die Shell-Datei ändern, die den Server startet, indem Sie die Umgebungsvariable „export LC_ALL=zh_CN.UTF-8“ festlegen, bevor Sie den Server starten, und so den Standardwert „locale“ unter dieser Konsole ändern.
④ Natürlich können Sie auch die „Gebietsschema“-Einstellungen des Betriebssystems ändern, aber da sich das Ändern der „Gebietsschema“-Einstellungen des Betriebssystems auf andere Anwendungen auswirkt, wird im Allgemeinen diese Methode verwendet.
Der Hauptgrund für die Verwendung der oben genannten Methode besteht darin, dass beim ersten Start der JVM das „Gebietsschema“ des Betriebssystems auf das Standard-„Gebietsschema“ der JVM festgelegt wird. Der Wert „Gebietsschema“ ist im Betriebssystem nicht festgelegt. Die JVM setzt das Standard-„Gebietsschema“ der JVM auf das Standard-„Gebietsschema“ der JVM. Natürlich können Sie auch die Standard-„Gebietsschema“-Einstellung der JVM ändern, wenn Wenn die JVM die Anwendung ausführt, wird sie, wenn die Codierungsmethode angegeben ist, in die angegebene Codierungsmethode konvertiert, andernfalls wird sie gemäß dem Standard-„Gebietsschema“ der JVM konvertiert.
Fazit
Die von der Java-Sprache in der chinesischen Anzeige unter Linux erzeugten verstümmelten Zeichen hängen hauptsächlich mit der Schriftart der JVM, den Gebietsschemaeinstellungen des Betriebssystems, die Standard-Gebietsschemaeinstellungen der JVM und der Anwendung. Die Gebietsschemaeinstellungen in und der direkt in der Anwendung angegebene Binärsequenz-Stream beziehen sich auf den Zeichensatz für die Zeichenfolgenkonvertierung. Dies liegt an den unterschiedlichen Zeichenkodierungsmethoden, die bei der gegenseitigen Konvertierung von Binärsequenzströmen und -zeichenfolgen verwendet werden, oder daran, dass die JVM die erforderliche Schriftart nicht finden kann. Zur Lösung des Problems können verschiedene Methoden verwendet werden . Anwendungsumgebung.
Empfohlen: [Linux-Video-Tutorial]
Das obige ist der detaillierte Inhalt vonJava verstümmelter Code unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!