Apache Tomcat i UTF-8
W dobie nowoczesnych i szerokodostępnych aplikacji internetowych, korzystanie z kodowania UTF-8, pozwalającego na zapis dowolnego znaku Unicode, już w tej chwili jest raczej wymogiem. Co ciekawe, nadal zdarzają się technologie i narzędzia, który nie korzystają z nich domyślnie i potrzebują dodatkowej konfiguracji. Przykładem takiego narzędzia jest Apache Tomcat.
Korzystając z Javy EE, np. za pośrednicem servletów, podstawowym sposobem na ustawienie kodowania jest użycie metody setCharacterEncoding
dla klas ServletRequest
i ServletResponse
.
Wydawać by się mogło, że to powinno zaradzić wszelkim problemom z niestandardowymi znakami.
Niestety, problem pojawia się wtedy, gdy jakiekolwiek dane pochodzą z adresu URL, czyli przede wszystkim parametry GET
żądania.
Rozwiązaniem na to jest odpowiednia konfiguracja serwera.
Konfiguracja dla serwera, zazwyczaj znajduje się w pliku conf/server.xml
w katalogu głównym Apache Tomcat.
Ustawienie odpowiedniego kodowania należy zmienić dla używanego elementu Connector
(zazwyczaj wszystkich) korzystając z atrybutu URIEncoding
.
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
Po zmianie konfiguracji, ponowne uruchomienie serwera pozwoli na korzystanie w pełni z kodowania UTF-8.