Problemem okazało się, że przesyłanie znaków zakodowanych GETem niewiele daje bo serwer aplikacyjny ma w swojej konfiguracji zapiane w jakim kodowaniu są requesty i tak je przetwarza, zwykle jest to Latin-1.
Co należy zrobić ?
W przypadku JBoss'a:
W pliku %jboss-home%\server\%konfiguracja%\deploy\jboss-web.deployer\server.xml należy dodać atrybut URIEncoding="UTF-8" elementu Connector (dla portu 8080)
W przypadku gdy ruch do JBossa jest kierowany przez Apacha za pomocą mod_jk konieczne jest dodanie w server.xml do Connectora atrybutu URIEncoding="UTF-8" (tym razem dla portu 8009). I powinno śmigać
A tu troche literatury na temat kodowania polskich znaków:
http://java.sun.com/developer/technicalArticles/Intl/HTTPCharset/
http://www.warski.org/blog/?p=4
http://confluence.atlassian.com/display/DOC/Configuring+Tomcat's+URI+encoding
A z takich ciekawostek to kiedyś miałem też problem z PostgreSQL 8.1 (ale w innych wersjach było to samo) ponieważ baza była zainstalowana z innym niż UTF-8 domyślnym kodowaniem.
Problem był z polskimi znakami w bazie mającej kodowanie ustawione na UTF-8. Wyszystko było w porządku do momentu kiedy wywołało się w SQL funkcji tolower , toupper. Polskie znaki nie były traktowane wtedy jako litery tylko jako znaki specjalne i tym samym nie były "zmniejszane" i "zwiększane". Zainstalowanie bazy z domyślnym kodowaniem UTF-8 pomogło.
No comments:
Post a Comment