Autor Zpráva
Marcus Flintus
Profil
Ahoj,

píšu stránky v PSPadu v kódování UTF-8. Mám zapnutou detekci CP, vždy se detekuje správně (mám v každém souboru zakomentovanou diakritickou sadu)

V hlavičce mám charset takto:
<meta http-equiv="Content-Type" content="text/html; charset=uft-8" />

Přesto mi ale kódování nefunguje.
např.: VĂ­tejte v AdministraÄŤnĂ­m systĂ©mu!

Nechápu to. Kde můžu dělat chybu?
Miloš
Profil
Může být, že server posílá blbě znakovou sadu v http hlavičce.
Nebo to dělá na localu?
Byla by živá ukázka?
Davex
Profil
Marcus Flintus:
Pokud běží webserver na Apache, tak do souboru .htaccess přidej nastavení kódování češtiny pro soubory *.php, *.htm a *.html:
<FilesMatch "\.(php|html?)$">
    AddDefaultCharset utf-8
</FilesMatch>
Marcus Flintus
Profil
Tak jsem na to po dalším bádání přišel.
Problém byl v tom, že prohlížeč správně nerozpoznal kódování ze zaslané hlavičky, která vypadala takto:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Administrační systém</title>
	<link rel="stylesheet" href="css/screen.css" type="text/css" />
</head>


Co je na ní špatně, nevím. Současná:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  <title>Administrační systém</title>
  <link rel="stylesheet" href="css/screen.css" type="text/css" />
</head>


už funguje. Proč to tak ale je?
Davex
Profil
Tato úprava nemá na rozpoznání kódování žádný vliv. V jakém prohlížeči se problém objevil?
Marcus Flintus
Profil
Firefox 3.0.15

ted si uvědomuju že před úpravou byla vlastně meta až za title.

Tak je možné že by prohlížeč špatně určil kódování (podle title) a následující charset už ignoroval?
Bubák
Profil
Marcus Flintus:
ted si uvědomuju že před úpravou byla vlastně meta až za title.
Neznám prohlížeč, kterému by tohle vadilo.
_es
Profil
Bubák:
Neznám prohlížeč, kterému by tohle vadilo.
Ako by mal prehliadač inak poznať, v akom kódovaní je obsah značky title?
Hlavne keď tam sú znaky s diakritikou, ktoré sú v každom kódovaní zakódované inak.
DoubleThink
Profil *
_es:
Ako by mal prehliadač inak poznať, v akom kódovaní je obsah značky title?
Buďto vlastní analýzou, nebo počká se zobrazením title tu desetinku sekundy až bude k dispozici i meta tag s kódováním.
Pokud vím, žádnému současnému browseru nedělají pozice meta tagů sebemenší problémy.
Bubák
Profil
_es:
Ako by mal prehliadač inak poznať, v akom kódovaní je obsah značky title?
Asi před rokem jsem dělal testy různých prohlížečů s uměle vytvořeným souborem, kde za značkou <title> byl obří komentář, teprve za ním meta tag charset.
Některé prohlížeče zobrazily obsah TITLE ihned a po načtení meta tagu charset jej zobtazily správně.
Jiné prohlížeče zobrazily obsah TITLE až po načtení meta tagu charset. Už si nepamatuji, jak se tyto prohlížeče chovaly, pokud meta tag charset úplně chyběl, zda obsah TITLE zobrazily po skončení head, , na začátku body, nebo po načtení stránky.

Poznámky jsem si neudělal, protože všechny testované prohlížeče zobrazily obsah TITLE správně a běžně bývá meta tag charset nejpozději ihned za TITLE, takže data o použitém charsetu přijdou ve stejném, přinejhorším v následujícím paketu.
_es
Profil
DoubleThink, Bubák
Tak či tak je vtedy obsah značky title do toho meta tagu v nedefinovanom kódovaní.
Nemôžu nastať problémy, ak je navyše definovanie kódovania, možno iné, ešte aj v http hlavičke?
Davex
Profil
Kódování definované v HTTP hlavičce má vždy přednost před meta http-equiv, takže přehození pořadí meta s title by nemělo vliv.

Pokud je title před meta, tak se jen za určitých speciálních podmínek zobrazí prázdná stránka v IE6. Další problémy mi nejsou známy.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: