S Java EE jsem začínal, když jsem narazil na zdánlivou drobnost. Po odeslání formuláře se text do databáze (případně do chybové hlášky, když nebyla vyplněna další pole) vsunul se zmršenou diakritikou - jako třeba
Å¡ÄÅÄÅáéÃýáž
hádejte, co to je? :-)
Mno, gůglil jsem a vztekal se téměř tři dny, než jsem nalezl řešení. Krom toho, že nepředstavitelné množství nalezených návodů nefungovalo, jsem vytrvale přehlížel konzoli GlassFishe s hláškou:
WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context , because request parameters have already been read, or ServletRequest.getReader() has already been called.
Nakonec pomohlo ručně vytvořit soubor "WEB-INF/glassfish-web.xml" s tímto obsahem:
<?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 error-url=""> <class-loader delegate="true"/> <jsp-config> <property name="keepgenerated" value="true"> <description>Keep a copy of the generated servlet class' java code.</description> </property> </jsp-config> <!-- Change the default character encoding from ISO-8859-1 to UTF-8 --> <parameter-encoding default-charset="UTF-8"/> </glassfish-web-app>
GlassFish Default Encoding ISO-8859-1 (zde jsem našel řešení).
Osobně mi řešení v níže uvedených článcích přímo nepomohly, ale uvádím je, protože pro mnohé uživatele by řešení představovat asi mohly a hlavně mi sloužily k lepšímu pochopení problematiky:
Java – znakové kódování, České znaky v JSP stránkách, Request parameter encoding, WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context , because request parameters have already been read, or ServletRequest.getReader() has already been called.
web.xml Reference Guide for Tomcat - pro zajímavost, co všechno za nastavení se dá psát do web.xml (neplést s glassfish-web.xml!).
Tento web jsem zakládal na střední, v roce 2008. Je zde hlavně archiv mé tvorby.
Aktuální věci publikuji kvůli úspoře času na Twitter.
Honza
"Čas je materiál, ze kterého se vyrábí život."