375 Stimmen

Wie kann man UTF-8 in Java-Webanwendungen zum Laufen bringen?

Ich muss UTF-8 in meiner Java-Webapp (Servlets + JSP, kein Framework verwendet) arbeiten, um zu unterstützen äöå usw. für normalen finnischen Text und kyrillische Alphabete wie für besondere Fälle.

Ich habe die folgende Konfiguration:

  • Entwicklungsumgebung: Windows XP
  • Produktionsumgebung: Debian

Verwendete Datenbank: MySQL 5.x

Die Nutzer verwenden hauptsächlich Firefox2, aber auch Opera 9.x, FF3, IE7 und Google Chrome werden für den Zugriff auf die Website verwendet.

Wie kann dies erreicht werden?

1voto

Jay Punkte 661

Nette ausführliche Antwort. wollte nur eine weitere Sache hinzufügen, die definitiv anderen helfen wird, die UTF-8-Kodierung auf URLs in Aktion zu sehen.

Führen Sie die folgenden Schritte aus, um die UTF-8-Kodierung für URLs in Firefox zu aktivieren.

  1. Geben Sie "about:config" in die Adressleiste ein.

  2. Verwenden Sie den Filter-Eingabetyp, um nach der Eigenschaft "network.standard-url.encode-query-utf8" zu suchen.

  3. die obige Eigenschaft ist standardmäßig falsch, setzen Sie sie auf TRUE.

  4. Starten Sie den Browser neu.

Die UTF-8-Kodierung von URLs funktioniert standardmäßig in IE6/7/8 und Chrome.

1voto

Rogelio Triviño Punkte 4963

Die bisherigen Antworten haben bei meinem Problem nicht funktioniert. Es war nur in der Produktion, mit Tomcat und Apache mod_proxy_ajp. Post body verlor nicht ascii Zeichen durch ? Das Problem war schließlich mit JVM defaultCharset (US-ASCII in einer Standard-Installation: Charset dfset = Charset.defaultCharset();) Die Lösung bestand also darin, den Tomcat-Server mit einem Modifikator auszuführen, um die JVM mit UTF-8 als Standardzeichensatz auszuführen:

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8" 

(fügen Sie diese Zeile zu catalina.sh und service tomcat restart hinzu)

Vielleicht müssen Sie auch die Linux-Systemvariable ändern (bearbeiten Sie ~/.bashrc und ~/.profile für eine dauerhafte Änderung, siehe https://perlgeek.de/en/article/set-up-a-clean-utf8-environment )

export LC_ALL=de_US.UTF-8
export LANG=de_US.UTF-8

export LANGUAGE=de_US.UTF-8

0voto

caarlos0 Punkte 18952

Ich bin mit einem ähnlichen Problem, aber, in Dateinamen einer Datei, die ich mit Apache Commons komprimiert bin. Also, ich habe es mit diesem Befehl gelöst:

convmv --notest -f cp1252 -t utf8 * -r

Es funktioniert sehr gut für mich. Hoffe, es hilft jemandem ;)

0voto

bnguyen82 Punkte 5338

Für meinen Fall der Anzeige von Unicode-Zeichen aus Nachrichtenbündeln muss ich den Abschnitt "JSP page encoding" nicht anwenden, um Unicode auf meiner JSP-Seite anzuzeigen. Alles, was ich brauche, ist der Abschnitt "CharsetFilter".

0voto

David Punkte 920

Ein weiterer Punkt, der noch nicht erwähnt wurde, bezieht sich auf Java Servlets, die mit Ajax arbeiten. Ich habe Situationen, in denen eine Webseite utf-8-Text vom Benutzer aufnimmt und diesen an eine JavaScript-Datei sendet, die ihn in einen an das Servlet gesendeten URI aufnimmt. Das Servlet fragt eine Datenbank ab, erfasst das Ergebnis und gibt es als XML an die JavaScript-Datei zurück, die es formatiert und die formatierte Antwort in die ursprüngliche Web-Seite einfügt.

In einer Webanwendung befolgte ich die Anweisungen eines frühen Ajax-Buches, um das JavaScript bei der Erstellung des URIs zu verpacken. Das Beispiel im Buch verwendete die Methode escape(), die, wie ich herausfand (auf die harte Tour), falsch ist. Für utf-8 müssen Sie encodeURIComponent() verwenden.

Heutzutage scheinen nur noch wenige Leute ihr eigenes Ajax zu entwickeln, aber ich dachte, ich könnte dies ebenfalls hinzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X