Autor Zpráva
flc
Profil *
Dobrý den,
chci se zeptat, jakožto začátečník, jaké základní nastavení pro kódování dokumentu provádíte, aby všechna komunikace mezi různými programovacími jazyky a příkazy fungovala správně?

Příklad, jak to dělám já a prosím o opravu, pokud je něco špatně. Chci se spolehnout, že na všech zařízeních a v různých prohlížečích s různými nastaveními uživatele bude fungovat vykreslení textu tak, jak má, takže pro to udělám následující:

- používám Notepad++, nejprve v záložce formát zvolím "změnit kódování na UTF-8";
- protože nejčastěji používám <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">, resp. <!DOCTYPE html>, v hlavičce pak zvolím správný atribut pro meta tag, takže buď <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>, resp. <meta charset="UTF-8" />

Mám to správně, když předpokládám spolupráci HTML s JS a PHP, příp. i MySQL, nebo to není tak jednoduché?
Děkuji za odpovědi
Trejpa
Profil
flc:
pokud je něco špatně
Pokud ti to funguje, tak to děláš dobře. Na doctype záleží jen vykreslovací režim prohlížeče, kódování znaků to neovlivní. Zápisy meta značky na kódování jsou rovnocenné a funkční, zbytečné lomítko na konci značky umí současné HTML prohlížeče ignorovat. Kromě meta značek může kódování ovlivnit BOM, serverová hlavička a v případě pravého X(HT)ML ještě výchozí kódování dokumentu a XML prolog.

na všech zařízeních a v různých prohlížečích s různými nastaveními
Zobrazení znaku nezáleží jen na použitém kódování, ale také na podpoře národní abecedy ve zvoleném písmu a jeho přítomnosti v daném zařízení.

Mám to správně, když předpokládám spolupráci HTML s JS a PHP, příp. i MySQL
Pro jednoduchost stačí používat jen jedno libovolné, ale všude stejné, kódování, které pokryje tvé potřeby.
Kajman
Profil
Důležité jsou i http hlavičky serveru. Po připojení k mysql jí dejte vždy vědět, že pracujete s daty v utf8. Viz. Některé časteji řešené dotazy pro MySQL - FAQ » MySQL a čeština
flc
Profil *
Trejpa:

"Pokud ti to funguje, tak to děláš dobře."

Jj, funguje mně to, jen asi nevím, jestli záleží na tom, jestli má uživatel v prohlížeči nastavené třeba windows-1250, pokud se nemýlím, tak je to na některých prohlížečích default možnost, ale to by asi nevadilo, protože UTF-8 je něco jako souhrn všech díky posloupnosti bajtů a širšímu rozsahu?, Nevím, chybí mně prostě v tomto nějaká znalost teorie z praxe, trochu to zobecnit a zjistit, kde jsou hlavní chytáky.

"Kromě meta značek může kódování ovlivnit BOM"

Jakým způsobem ji ovlivní?

Našel jsem si toto, nevím co je to endianness, a tím jsem přišel o celou pointu, ale pochopil jsem, že je BOM hlavička asi zbytečná v jakém případě? - "Normally, the BOM is used to signal the endianness of the encoding, but since endianness is irrelevant to UTF-8, the BOM is unnecessary."


[i]"ale také na podpoře národní abecedy ve zvoleném písmu"[i]

Aby byl font tzv. TrueType, což bude znamenat, že tam najdu asi všechny znaky, je to tak?


b]Kajman[/b]:
Ano, díky, k mysql_query už jsem se zrovna včera dostal nějakou zvláštní oklikou přes .htaccess a chápu, že při různých knihovnách, nebo jazycích tam asi bude rozdílné nastavení


"teorie z praxe z první ruky" .]


A ještě jeden takový menší dotaz. Je nějaký důvod, proč bych neměl používat google.com/fonts?
Trejpa
Profil
flc:
Nějak se do toho zamotáváš.

jestli záleží na tom, jestli má uživatel v prohlížeči nastavené třeba windows-1250
Výchozí chování prohlížečů je takové, že se nejdříve podívají do hlavičky souboru a do hlavičky stránky, zda neobsahuje určené kódování. Potom se snaží kódování uhádnout podle použitých znaků. A teprve nakonec použije nějaké své výchozí. Uživatel to poté může změnit, třeba když se prohlížeč netrefí.

Jakým způsobem ji ovlivní?
BOM jsou nepovinné identifikační Byty na začátku souboru s kódováním UTF (8, 16BE, 16LE). Určují druh kódování UTF a případně pořadí bitů. Když kódování neuvedeš, některé prohlížeče v rámci hledání kódování podle nich mohou kódování nastavit na UTF.

Aby byl font tzv. TrueType
To je typ vektorového písma. Nemusí obsahovat žádný běžný znak, klidně jen samé obrázky. Univerzální písmo by mělo obsahovat znaky z kódové tabulky Unicode.
flc
Profil *
Trejpa:
Děkuji za vysvětlení, moc si mně pomohl, pokud bych chtěl na stránce používat čiště jen české znaky a vše, co k češtině patří, pomocí BOM bych tedy zvolil určitou tabulku s kódováním?


A nebo, pokud bych chtěl české a slovenské znaky tak pomocí BOM identifikátorů zvolit příslušné tabulky?


Je lepší kódování neuvádět a spoléhat na prohlížeč? Asi ne, že. Díky za trpělivost
margin
Profil *
Jako začátečníkovi bych ti doporučil:
- nepoužívat BOM
- deklarovat ḱódování meta značkou, nespoléhat na prohlížeč

Zkušení, kteří vědí, kde se v editoru zapíná/vypíná ukládání BOMu a umí posílat kódování HTTP hlavičkou, ať si dělají co chtějí, podle vlastního uvážení. Ale v naprosté většině případů nepoužívají BOM a deklarují kódování meta značkou.
flc
Profil *
margin:
Přímá odpověď, díky :) Mám opravdu poslední dotaz, jestli používáním google.com/fonts nezatěžuju moc prohlížení pro uživatele, když třeba si vyberu jedno patkové a jedno bezpatkové písmo, latin-extended, regular i bold, je to rázem na červené.
Trejpa
Profil
flc:
Ptal ses, jak může BOM ovlivnit kódování, ne zda se tak i běžně používá.

• Nastav si kódování v editoru (třeba na UTF-8),
• vypni přidávání BOM, pokud ho editor přidává,
• prohlížeče o použitém kódování informuj pomocí meta značky (třeba <meta charset=utf-8>).

nezatěžuju moc prohlížení pro uživatele
Další věc, co se stahuje navíc. Každý požadavek na další soubor načítání zpomaluje. Pokud je externích souborů málo, jsou malé a je rychlá odezva, tak to vadit nemusí. Pokud se na soubory čeká dlouho, je to překážka pro plynulé prohlížení. Míru únosnosti testuj na pomalém připojené.

když třeba si vyberu jedno patkové a jedno bezpatkové písmo, latin-extended, regular i bold, je to rázem na červené.
Na to bude vhodné sem vložit odkaz.
flc
Profil *
To je právě to, pokud je externích souborů málo, nebo není, to nevím. Většinou mám na stránce připojený v hlavičce css soubor, max. dva a mezi </body> a </html> jQuery knihovnu a jeden či dva skripty, no a co se týče CSS sprites, tak tam ještě to neumím použít vždycky :/

<link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700|Simonetta:400,900&subset=latin-ext' rel='stylesheet' type='text/css'>


/>
Takové zakončení nepárového tagu je určitě zbytečné?


jo a samozřejmě taky občas php součásti stránek


Ale dobré, každopádně děkuju za mnoho cenných rad, já už si s tím nějako snad poradím, nebudu zdržovat. Díky mockrát :)
Trejpa
Profil
flc:
/> Takové zakončení nepárového tagu je určitě zbytečné?
Na webu je to určeno pro jazyk XHTML, který se tímto snažil být i XML souborem. V jazyce XML jsou značky jen párové, všechny se musí uzavírat. Lomítko slouží na konci značky místo druhé zavírací (<br></br> = <br />). Naštěstí se pravé XHTML neuchytlo a téměř všichni používají HTML (bez ohledu na to, co píší v doctype). Lomítko původně mělo sice jiný význam (teoreticky), ale všechny prohlížeče ho ignorují jako neznámý atribut. Lomítko je zbytečné, ale ničemu nevadí.

V jazyce HTML se všechny značky, párové počáteční, koncové i nepárové, uzavírají jen znakem >.
flc
Profil *
Trejpa:
Díky moc, už si to budu pamatovat. Pokud jde o XHTML v DOCTYPE, <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">, tohle by mělo být správně.
Trejpa
Profil
flc:
Jak jsem psal, prohlížeče jen (zne)užívají doctype na určení vykreslovacího režimu, jinak je jeho obsah nezajímá. Má sloužit jen validátorům a pro ně se stránky nepíší. Máš to správně, ale klidně stačí i krátké <!DOCTYPE HTML>.

Vaše odpověď

Mohlo by se hodit

Nezapomeňte na odkaz na živou ukázku problému.

Prosím používejte diakritiku a interpunkci.

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

0