JanKoWeb: Tvorba webu - Java EE: nesprávné kódování po odeslání formuláře
jankoweb.wz.cz
Mezinárodní den svobody tisku.


Java EE: nesprávné kódování po odeslání formuláře

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>

Reference

GlassFish Default Encoding ISO-8859-1 (zde jsem našel řešení).

K pochopení problematiky

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!).

Rubrika Tvorba webu | Tagy Java EE, Problém, Kódování, čeština | Ne 06.05.2012 | 2608x

Náhodné články

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

"Čím více toužím něco udělat, tím méně tomu říkám práce."

R. Bach