Wie die Verwendung von UTF-8 mit tomcat

Tomcat nicht richtig codieren String-Literale, die unicode-Zeichen enthalten. Das problem tritt bei einem Linux-server aber nicht auf meinem Entwicklungsrechner (Windows). Es wirkt sich NUR auf String-Literale (nicht Strings Lesen aus DB oder Datei!!!).

  • Ich habe den URIEncoding="utf-8" im Connector-tag (server.xml).
  • Die ich verwendet habe setCharacterEncoding().
  • Ich cheched der Stapel-Ablaufverfolgung (keine Filter set encoding).
  • Ich habe die LANG-Umgebungsvariable festlegen
  • Ich cheched die HTTP-Header, und Sie korrigieren (Content-Type=text/plain;charset=utf-8)
  • Überprüfte ich die Codierung im browser und es ist richtig (UTF-8)

Nichts von den oben genannten Werken. Irgendwelche Ideen auf, was ich möglicherweise fehlen?

public class Test extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    resp.setCharacterEncoding("utf-8");
    resp.setContentType("text/plain;");

    Writer w = resp.getWriter();
    w.write("Μαλακία Latin"); //Some unicode characters
    w.close();
}

Des oben zeigt dies am browser.
ÎλληνÎ1κΠLatein

  • Stellen Sie sicher, dass der Quellcode der java-Datei muss utf-8-Codierung festgelegt. Ich benutze Notepad++ um dies zu überprüfen. Öffnen Sie die Datei und überprüfen Sie die "Encoding" - Menü. Wenn die Kodierung nicht auf UTF, dann schneiden Sie den gesamten Inhalt der Quell-Datei, ändern Sie die Codierung, fügen Sie den Inhalt aus der Zwischenablage ein und speichern Quelldatei.
  • Wenn Sie die server-Antwort in einem hex-editor, was ist die tatsächliche byte-Reihenfolge zurückgegeben? Was ist die Kodierung der Quelldatei?
  • "Das problem tritt bei einem Linux-server aber nicht auf meinem Entwicklungsrechner (Windows). "Wie sind Sie mit dem bereitstellen von Linux? Übertragen Sie Dateien eins nach dem anderen? Wenn ja, wie? Per FTP? Wenn dem so ist, sind Sie die übertragung im Binär-Modus?
  • Ich benutze ant zum check-out aus einem SVN-repository und kompiliert. Ich habe versucht, über "Datei-bi" an der ausgecheckten version und ich bekomme "text/x-java charset=utf-8". Ich kann auch Lesen Sie die Datei, ohne Probleme. So sind die meisten wahrscheinlich, es ist nicht ein problem mit der Quell-Datei-Codierung.
  • Ich löste es. Das problem wurde von ant (mein build-tool). Ich fügte hinzu, ein Attribut, das die javac-tag: '<javac ...., encoding="utf-8">'. Danke Euch allen für Eure Antworten. Sie wies mich in die richtige Richtung.
InformationsquelleAutor idrosid | 2012-03-22
Schreibe einen Kommentar