2014-11-06 18 views
6

Szukam pomocy, aby wszystkie moje warstwy w stosie były kodowane w UTF-8.JSP/GlassFish: jak poprawnie skonfigurować kodowanie UTF-8?

znalazłem ten piękny artykuł:

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

opisującą 3 miejsca muszę się martwić o kodowaniu. Ponieważ moja (1) baza danych Oracle jest obecnie ustawiona na UTF-8, pozostawia ona (2) przeglądarkę i (3) serwer, aby się martwić.

Znalazłam też to szczegółowy artykuł

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

które staram się śledzić poniżej, ale z pewnymi pytaniami początkujących około realizacji.

Aby rozwiązać przeglądarkę, zrobiłem pewnością zaliczyć na górze każdej strony JSP:

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

(Dla porównania, patrz here).

Aby rozwiązać ten serwer, zrobiłem pewien zawierać następującą linię w apletu Java i stron JSP przed wydaniem request.getParameter() lub request.getAttribute() oświadczenie:

request.setCharacterEncoding("UTF-8"); 

Ponieważ Używam GlassFish 3.1.2, ja rozumiem, że domyślnie nie używa on UTF-8, więc muszę go jakoś ustawić ręcznie.

Widziałem wiele stron internetowych mówiących o pliku o nazwie glassfish-web.xml. Czy ta część normalnej szklarni jest zainstalowana? Nie wiem, gdzie to znaleźć. Korzystam z pliku web.xml w moim folderze WEB-INF dla mojej aplikacji internetowej. Czy ktoś mógłby mi pomóc dowiedzieć się, czy muszę zmodyfikować ten plik web.xml, czy też muszę znaleźć lub utworzyć nowy plik o nazwie glassfish-web.xml, aby skonfigurować kodowanie dla glassfish?

Mój plik web.xml rozpoczyna się:

<?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> 
... 

Na żądanie/serwletu JSP, I obejmują następującą linię w pliku web.xml

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

Czy to OK, aby umieścić w pliku web.xml? Lub czy trzeba przejść do jakiegoś pliku glassfish-web.xml?

na odpowiedź/serwletu JSP, umieścić następujące w moim pliku web.xml (Akceptowane odpowiedź here):

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

Jestem zakładając te linie wystarczy włożyć między <web-app> i </web-app>. Ale daj mi znać, czy powinni zamiast tego wejść do innego deskryptora (takiego jak <glassfish-web-app> i </glassfish-web-app>)?

ja również umieścić następujące informacje w sekcji JSP <head>:

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

Przydatne odnośniki:

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

Odpowiedz

9

Th e glassfish-web.xml to plik, który można utworzyć w folderze WEB-INF. Dla GlassFish 3.x musi wyglądać podobnie do tego:

<?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> 

I masz rację, ustawienie parametrów kodowania musi być w tym pliku, a nie w web.xml :)

Zobacz także :

+0

Dzięki @netwichtich, więc czy to prawda, że ​​oba pliki muszą istnieć w folderze WEB-INF (czyli 'web.xml' i' glassfish-web.xml')? Ponadto, czy muszę skonfigurować GlassFish, aby wyszukać ten plik 'glassfish-web.xml' po jego utworzeniu, czy też GlassFish znajdzie go automatycznie? – user46688

+1

Plik glassfish-web.xml nie jest tak naprawdę wymagany, jeśli nie trzeba go używać w przypadku niektórych właściwości konfiguracyjnych Glassfish, takich jak domyślne kodowanie. Plik zostanie zeskanowany automatycznie, jeśli zostanie umieszczony w folderze WEB-INF, upewnij się, że Clean & Build Twój projekt przed ponownym uruchomieniem :) – unwichtich

+0

O, przepraszam, zapomniałem, że jest to również wymagane. Zaktualizowałem swoją odpowiedź. – unwichtich