Java Servlets och Unicode

Tråden skapades och har fått 2 svar. Det senaste inlägget skrevs .
1

OBS!!! jag lyckades lösa problemet bara så ni vet Se tredje inlägget för lösningen

Hej allesammans, jag håller på att programmera java servlets men kan inte få de genererade hemsidorna att visas korrekt. Jag vill använda unicode överallt så att man slipper alla ö eftersom det dels sparar plats men framförallt gör saker och ting enklare eftersom man slipper tänka på konverteringar hit och dit. Enklare om det fungerar vill säga.

Som det är nu har jag reducerat allt till en enda servlet. Det enda servleten gör är att skriva ut en liten hemsida med några svenska tecken. Själva java-filen är sparad i UTF-8, alla objekt i java-koden är satta att arbeta med UTF-8. Tomcat är satt att arbeta med UTF-8 (CATALINA_OPTS=-Dfile.encoding=UTF-8) och själva html-koden innehåller meta-elementet som säger att sidan är kodad i UTF-8. Det görs inga databasanrop eller något liknande, allt är ren java och allt är ren UTF-8 men ändå så blir det inte rätt. Texten som skrivs ut är √•√§√∂ Det lustiga är att om man väljer att tolka den strängen som unicode från macroman dvs. man tar √•√§√∂ från macroman till unicode inte genom att konvertera utan genom att reinterpretera strängen så får man just åäö.

Om man kollar på klass-filen som bildas då man kompilerar kan man se alla konstanta strängar och man kan där konstatera att det verkar som om följande skett: Först har UTF-8 koden i java filen tolkats som macroman, sedan har den konverterats till UTF-8 för att sedan tolkats som macroman igen. När man kollar på servletens output så har det andra steget reverserats dvs. macroman har tolkats som UTF-8 men bara en gång så man får ändå inte se åäö.

Jag har bifogat en zip-fil med mitt test-projekt. Det är en ensam servlet, ett ant-script, en web.xml fil och ett antal mappar. Förutsatt att du har ant installerat är det bara att skriva ant war för att skapa en war fil i dist-katalogen. Har du dessutom tomcat installerat kan du öppna build.xml och ändra några property-element så kan du skriva ant install för att installera servleten under /sample du behöver dock ha en viss jar-fil med extra tasks till ant för att det ska gå.

Det blev ett ganska långt inlägg men men... Jag hoppas verkligen någon vet hur man gör för jag tycker jag testat allt och kan inte hitta någon vettig information genom googling (ingen som fungerar hur som helst). Jag har dessutom prövat att köra servleten i Jetty med exakt samma resultat.

Senast redigerat 2004-05-26 02:52

hehe, jag trodde jag prövat allt men det verkar som om det förväntas att man använder macroman när man kodar för när jag konverterar java-filen till macroman och kompilerar och kör så visas det perfekt. Men jag tycker ändå man borde kunna koda i UTF-8 om man vill, känns mer kompatibelt så. Kanske finns det inställningar att göra när man kör javac för just text-kodning... måste kolla.

Jo visst kunde man specificera text-koding vid kompilation. Genom att bara lägga till -encoding UTF-8 när man kör javac så fungerar allt som det ska. Jag trodde att javac förväntade sig UTF-8 men tydligen var det inte så. Skönt att det var så pass enkelt trots allt

1
Bevaka tråden