2014-11-06 3 views
6

Ich suche nach Hilfe, um alle meine Ebenen im Stapel auf UTF-8-Kodierung zu bringen.JSP/GlassFish: So richten Sie die UTF-8-Kodierung korrekt ein

fand ich diesen schönen Artikel:

http://www.javapractices.com/topic/TopicAction.do?Id=206

Beschreibung der drei Orte, die ich über Codierung zu kümmern. Da meine (1) Oracle-Datenbank derzeit auf UTF-8 eingestellt ist, müssen sich der (2) Browser und (3) Server Sorgen machen.

Ich fand auch dieses ausführlichen Artikel

http://balusc.blogspot.com/2009/05/unicode-how-to-get-characters-right.html#JSPServletRequest

die ich weiter unten folgen bin versucht, aber mit ein paar Anfängerfragen über die Umsetzung.

den Browser zu beheben, habe ich folgende an der Spitze jeder JSP-Seite umfassen sorgte dafür:

<%@page pageEncoding="UTF-8"%> 

(als Referenz siehe here).

den Server zu adressieren, stellte ich sicher, die folgende Zeile in der Java-Servlet und JSP-Seiten zu schließen, bevor Sie eine request.getParameter() oder request.getAttribute() Anweisung ausgeben:

request.setCharacterEncoding("UTF-8"); 

Da ich Glassfish 3.1.2, bin mit I verstehe, dass UTF-8 standardmäßig nicht verwendet wird, ich muss es also irgendwie manuell einstellen.

Ich habe viele Websites gesehen, die über eine Datei mit dem Namen glassfish-web.xml sprechen. Ist dieser Teil des normalen Glasfischs installiert? Ich weiß nicht, wo ich es finden kann. Ich habe die Datei web.xml in meinem Ordner WEB-INF für meine Webanwendung verwendet. Könnte jemand mir helfen, herauszufinden, ob ich diese web.xml Datei ändern muss, oder muss ich eine neue Datei namens glassfish-web.xml finden oder erstellen, um die Codierung für Glassfish zu konfigurieren?

Meine web.xml Datei beginnt mit:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd"> 
<web-app> 
... 

Für die JSP/Servlet-Anfrage, ich die folgende Zeile in der web.xml Datei enthalten

<parameter-encoding default-charset="UTF-8"/> 

Ist das OK in der web.xml Datei zu setzen? Oder muss es in irgendeine glassfish-web.xml Datei gehen?

Für die JSP/Servlet-Antwort, habe ich folgendes in meiner web.xml Datei (akzeptierte Antwort here sehen):

<jsp-config> 
    <jsp-property-group> 
     <url-pattern>*.jsp</url-pattern> 
     <page-encoding>UTF-8</page-encoding> 
    </jsp-property-group> 
</jsp-config> 

Ich gehe davon aus diesen Zeilen einfügen nur zwischen <web-app> und </web-app>. Aber lassen Sie mich wissen, ob sie stattdessen in einen anderen Deskriptor (wie <glassfish-web-app> und </glassfish-web-app>) gehen sollten?

Ich habe das auch in dem Abschnitt <head> JSP folgende:

<meta http-equiv="content-type" content="text/html; charset=utf-8"> 

Nützliche Referenzen:

How to get rid of WARNING: PWC4011: Unable to set request character encoding to UTF-8

https://stackoverflow.com/tags/servlet-filters/info

https://wikis.oracle.com/display/GlassFish/FaqHttpRequestParameterEncoding

Antwort

9

Th e glassfish-web.xml ist eine Datei, die Sie in Ihrem Ordner WEB-INF erstellen können. Für Glassfish 3.x muss es so aussehen: auch

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd"> 
<glassfish-web-app> 
    <jsp-config> 
    </jsp-config> 
    <parameter-encoding default-charset="UTF-8" /> 
</glassfish-web-app> 

Und Sie haben Recht, hat die Parameter-Zeichenkodierung in dieser Datei zu sein und nicht in dem web.xml :)

See :

+0

Danke @unwichtich, also ist es richtig, dass BEIDE Dateien im WEB-INF Ordner existieren müssen (also 'web.xml' UND' glassfish-web.xml')? Muss ich GlassFish auch so konfigurieren, dass es nach der Erstellung dieser "glassfish-web.xml" -Datei sucht, oder wird GlassFish es automatisch finden? – user46688

+1

Die Datei glassfish-web.xml ist nicht unbedingt erforderlich, wenn Sie sie nicht für einige Glassfish-spezifische Konfigurationseigenschaften wie die Standardcodierung verwenden müssen. Die Datei wird automatisch gescannt, wenn sie in den Ordner WEB-INF gestellt wird, stellen Sie sicher, dass Sie Ihr Projekt vor der erneuten Bereitstellung bereinigen und erstellen :) – unwichtich

+0

Oh Entschuldigung, ich habe vergessen, dass dies auch erforderlich ist. Ich habe meine Antwort aktualisiert. – unwichtich

Verwandte Themen