/ / Problem mit der Tomcat-Codierung - Java, Jsp, Tomcat, Codierung

Tomcat-Codierproblem erneut - Java, Jsp, Tomcat, Codierung

Zu StackOverFlow gibt es viele Fragen zu diesem Thema:

  1. Umgang mit Zeichenkodierung in URI unter Tomcat
  2. Warum ist das Zeichen bei der Verwendung von request.getParameter () in Java beschädigt?
  3. request.getParameter () zeigt die Zeichencodierung in Java-Servlet nicht ordnungsgemäß an
  4. Probleme mit der Zeichenkodierung beim Kater

Zu diesem Problem gibt es auch einen Link im Tomcat-Wiki: http://wiki.apache.org/tomcat/FAQ/CharacterEncoding

Also wusste ich nicht, welchen Titel ich für meine Frage schreiben sollte. Vielleicht würden Sie mir mit diesem einen oder anderen helfen.

Das Problem, auf das ich gestoßen bin: Wenn Text mit kyrillischen Zeichen von Anforderungen stammt, erhalte ich den folgenden Parameterwert: to ÐÐ¸Ð·Ð½ÐµÑ Ð¸ ÑинанÑÑ.

Was ich für diesen Moment habe:

  1. Alle jsp Dateien haben UTF-8-Encdoing wie folgt:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  1. In Eclipse-> Preferences-> General-> Workspace-> Textdatei-Kodierung auf utf-8 setzen
  2. Die Datenbankkodierung ist auf Folgendes eingestellt: DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;

  3. Im apache-tomcat-7.0.57conf Ordner server.xml einer der Connectors wurde folgendermaßen geändert:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>

  1. Codierfilter erstellen mit doFilter Methode:

    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpRequest = (HttpServletRequest)request;
    String requestEncoding = request.getCharacterEncoding();
    if (requestEncoding == null) {
    request.setCharacterEncoding(encoding);
    }
    chain.doFilter(request, response);
    }
    

Beim Lesen aus jsp Ich habe auch versucht, Parameter auf verschiedene Weise abzurufen:

 <a href="<c:url value="controller?command=viewFaculty">
<c:param name="name" value="${faculty.name}"/> </c:url>">${faculty.name}</a>

oder

<a href="<c:url value="controller?command=viewFaculty"> <c:param name="name" value="${faculty.name}"/>

Und ich bekomme immer noch diese hässlichen Charaktere. Würden Sie mir mit Ratschlägen helfen?

Antworten:

0 für die Antwort № 1

Ich löse mein Problem. Das Problem war, dass ich nicht das Original bearbeitet habe server.xml. Ich habe das bemerkt tomcat ist im Eclipse-Projektexplorer als Lesezeichen für ein Projekt erschienen Servers. Und einige Dateien liegen in ihm, wie zum Beispiel:

  1. catalina.policy
  2. catalina.properties
  3. context.xml
  4. web.xml
  5. tomcat-users.xml und
  6. server.xml

So kam es vor, dass der Kater bereits vorkonfigurierte Dateien hat und es seltsam ist, dass die von mir bearbeitete Datei server.xml im apache-tomcat-7.0.57conf Ordner unterscheidet sich von dem Ordner, der in diesem Projekt liegt.

Zu Beginn der Frage habe ich einige Antworten zu diesem Problem verlinkt, und am Ende meines Beitrags möchte ich diejenige weitergeben, die ich kürzlich gefunden habe und die mir als beste Anleitung zu diesem Problem erscheint: Wie kann man utf-8 in Java-Webapps zum Laufen bringen?