Ahoj, kódování je třeba uvést na dvou místech, aby to správně fungovalo, a je dobré ho dát ještě na třetím, a to takto:
<%@ page contentType="text/html; charset=utf-8" pageEncoding="windows-1250"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> To první místo je v direktivě @page v atributu contentType, a určuje, v jakém kódování bude stránka poslána prohlížeči, tj. HTTP hlavičku. Pokud není uvedeno, bere se iso-8859-1. Druhé místo je zase v direktivě @page, ale v atributu pageEncoding, a určuje, v jakém kódování je soubor JSP načten z disku. Musí odpovídat tomu, jak je nastaven editor, ve kterém to píšete. Default je určen nastavením operačního systému, přesněji řečeno systémovou property file.encoding, a na českých Windows to bude windows-1250. Třetí místo je v tom meta tagu. Pokud je nastaveno první místo (tj. HTTP hlavička), tohle nastavení má smysl jen pokud si uživatel uloží kopii stránky na disk, při kterém se HTTP hlavičky nezachovávají. Pokud HTTP hlavička kodování nespecifikuje, vezme ho prohlížeč z meta tagu. Specifikace v HTTP hlavičce má přednost před specifikací v meta tagu. No a pokud není kodování nastaveno ani v hlavičce ani v meta tagu, prohlížeč má nastaveno nějaké default kodování, ve Firefoxu je to v menu Úpravy - Předvolby - Obsah - Písma a barvy - Rozšířené - Znaková sada, případně se to dá rychle ručně vynutit v Zobrazení - Znaková sada. Takže stručná opověď je, že je třeba, aby pageEncoding bylo správně nastaveno, aby znaky byly vůbec správně načteny, a pak je třeba nastavit správně HTTP hlavičku pomocí contentType, aby byly znaky správně překodovány na výstupu a prohlížeč věděl jak. Pak není nutné na straně prohlížeče vůbec nic dělat. Makub ivo_m napsal(a): > Já mám trochu podobný problém. Jednoduchá stránka xx.html: > > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> > <html> > <head> > <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> > <title>Pokus 2</title> > </head> > > <body> > ěščřžýáíéúůťň > ĚŠČŘŽÝÁÍÉÚŮŤŇ > </body> > </html> > > se mi ve Firefoxu (v. 3.6.8) vždy zobrazí v kódování windows-1250 a musím ji > pokaždé ručně přepnout na utf-8, aby byla čitelná. V IE8 to funguje správně. > Jak > mám přemluvit Firefox, aby to zobrazoval správně? > WinXP, Apache 2.2 (localhost) > > Díky ivo -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Supercomputing Center Brno Martin Kuba Institute of Computer Science email: [email protected] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 --------------------------------------------------------------
smime.p7s
Description: S/MIME Cryptographic Signature
