Autor Zpráva
glossa
Profil *
Přeji dobrý den všem. Mám pár dotazů ohledně kódování a budu vděčný za každý příspěvek k tomuto tématu.

Potřebuji vědět, jak nastavit PHP aplikaci napojenou na databázi MySQL tak, aby se správně zobrazila v závislosti na proměnné jazykové verzi vybrané klientem.

Předpokládejme, že chceme mít aplikaci ve všech jazycích světa. Jakou možnost pak volíme v:
- kódování souboru v nastavení textového editoru
- interním kódování (mb_internal_encoding, ...)
- kódování MySQL databáze
- kódování tabulky MySQL databáze
- html lang="" dir=""
- meta http-equiv="Content-Language" content=""
?

Děkuji všem za cenné rady
Alphard
Profil
Není ten požadavek na všechny jazyky světa (řekněme i různé dialekty Indiánů, kmenů v Oceánii atd.) zbytečně hypotetický? V PHP se často používá utf8, kdyby nestačilo, tak nějaký Unicode nebo nějaký Unicode*.
A nastavení zbytku je jednoduché, musí se to shodovat.

*Omlouvám se za nepřesnou formulaci. Myslel jsem, kdybyste z jakýchkoliv důvodů nechtěl použít utf8 (třeba při komunikaci s Win API jsou někdy problémy s utf-8, ale to se samozřejmě netýká php).
glossa
Profil *
Alphard

Ano, když jsem psal "všech jazycích světa", měl jsem na mysli hlavně ty produktivní a vyspělé země, u kterých je předpokladem, že větší či menší část obyvatel využívá počítačovou technologii a prohlížení webu je pro ně denní chleba, což je téměř celý svět.

Znamená to tedy, že u jazykových verzí, které se nevešly do utf8, je třeba vytvořit vlastní databázové tabulky a vlastní moduly aplikace, nebo jak přesně se to potom dělá v komerčním prostředí? Není na to nějaký lék, nebo je tím nejlepším právě utf8?

Když to řeknu v analogii, rád bych aplikaci postupně dostal do jazykového záběru stejného, jako např. facebook, twitter atp.
Martin2
Profil *
Znaky, které nejsou obsaženy v UTF8, nejsou pravděpodobně obsaženy v žádném jiném standardním kódování. Takže nemusíš vymýšlet nesmysly, použij UTF8 na všechno.

Jakékoliv označení jazyka uvnitř HTML je zbytečné, roboti ho ignorují.
glossa
Profil *
Martine, dík, beru na vědomí. Jen se zeptám - co na to říká SEO? Řekl bych, že to je hlavní důvod uvádění jazyka v HTML, ne? Teď mám na mysli např. nějaký textový blok v těle stránky, který se liší od zbytku atp.
Alphard
Profil
O SEO se naštěstí nezajímám, ale vzhledem k tomu, že utf8 používá 84 % webů (zdroj), tak bych se toho nebál.
Co myslíte textovým blokem lišícím se od zbytku stránky nevím, celá stránka by měla být ve stejném kódování.
glossa
Profil *
No, vypadá to, že jsem to začal zbytečně překombinovávat. Ukončíme to tedy tím, že utf8 zvládne vše a pokud ne, tak unicode a vlastní řešení. Díky moc Aplharde a Martine.
Jan Tvrdík
Profil
utf8, kdyby nestačilo, tak nějaký Unicode
utf8 zvládne vše a pokud ne, tak unicode
Pomocí UTF-8 lze zakódovat všechny znaky Unicode (+ teoreticky hodně znaků na víc).
glossa
Profil *
Jan Tvrdík

Rozumím - utf8 by mělo být dostatečné, ale asi jste nikdo nepotřeboval vyzkoušet, jak je to ve skutečnosti? Tak se budu muset vrhnout do nějakého testování, abych pak zbytečně nepřepisoval strukturu webu nebo databázový design.
Jan Tvrdík
Profil
glossa:
Tak se budu muset vrhnout do nějakého testování
Testuj si klidně co chceš, stejně nakonec použiješ UTF-8. Reálně narazíš spíš na limit fontu než na limit UTF-8.
Fisir
Profil
Doplním, že MySQL má velmi zvláštní implementaci UTF-8, která nedovolí vložit znaky vyjádřené čtyřmi byty (třeba emoji z klávesnic smartphonů), ale text místo toho těsně před smajlíkem usekne. Není to problém UTF-8, ale MySQL, který lze obejít nastavením kódování ne utf8_*, ale utf8mb4_*.
glossa
Profil *
Ok, díky Honzo, samozřejmě pro tak rozsáhlou aplikaci uvažujeme s designérem nad dvěmi možnostmi - bezpečné nebo vlastní fonty...
glossa
Profil *
Fisir

Díky za info, určitě prozkoumám.
glossa
Profil *
Fisir

Každopádně bude tam validace textu jak na straně klienta, tak před odesláním na server a smajlíky pro diskuzi k tématu budou vlastní.
Joker
Profil
glossa:

S kódováním je to tak, že se používá UTF-8, pokud není konkrétní důvod použít něco jiného.

V praxi stejně nemůžete počítat ani s tím, že uživatel zobrazí celý rozsah UTF-8, natož aby zobrazil jiné znaky.
glossa
Profil *
Joker:
Tomu rozumím, stačí si pomocí jednoduché funkce vypsat všechny znaky UTF-8 a polovinu z nich nelze zobrazit. Předpokládám, že důvodem je nastavení kódování prohlížeče, které neovlivníme. O to mně ale stejně nejde, hlavně aby cílový obsah pro konkrétního klienta měl správnou podobu. Já jsem očekával, že odpovědí bude UTF-8, ale potřeboval jsem se ujistit. Všem díky za pomoc.
Keeehi
Profil
glossa:
Předpokládám, že důvodem je nastavení kódování prohlížeče, které neovlivníme.
Kódování stránky v prohlížeči nastavíš metatagem. Za to, že se nezobrazí některé znaky však může font a ne prohlížeč jak už psal Jan Tvrdík v [#10].
glossa
Profil *
Keehi

Aha, tak v tom případě je vlastní font prakticky nezbytností, je to tak?
Martin2
Profil *
Ne, není. Řešíš kraviny.
Systémové fonty dnes obsahují drtivou většinu běžných světových znaků. A to že Islanďan nebude mít správně zobrazenou Jihoafrickou zuluštinu, bych nepovažoval za problém. Unicode navíc nativně podporuje fallback – nenalezený znak se automaticky vykreslí z jiného dostupného fontu, pokud je v něm definovaný.
Alphard
Profil
glossa:
Aha, tak v tom případě je vlastní font prakticky nezbytností, je to tak?
Ne nezbytně, vlastní fonty jsou spíš otázkou grafiky. Čistě z pohledu použitelnosti, každému se sice zobrazí jen font, který má na počítači k dispozici, avšak ten je v souladu s jeho požadavky (a znalostmi).

S tímhle si nejvíc zábavy užije grafik a kodér, protože dát vše dohromady tak, aby všude seděly i texty psané zprava doleva (případně i ve sloupcích ze shora dolů) není jen tak. A tito lidé samozřejmě budou potřebovat všechny fonty, aby to mohli zkontrolovat.
Joker
Profil
Nezbytností pro jaký účel?
S výjimkou vypsání seznamu znaků Unicode mě nenapadá použití, které by skutečně vyžadovalo použít většinu, natož všechny, Unicode bloky.

Jako stránka, která z toho co znám používá asi nejvíc různých abeced současně, mě napadl Seznam jazyků Wikipedie.
Ten se mi tu zobrazuje ve fontu DejaVu Sans, kde velká část Unicode bloků chybí (např. egyptské hieroglyfy, klínové písmo, partské, mongolské, staroturkické, jihoarabské nápisové písmo a další), přesto se mi tam zobrazí všechny jazyky kromě pěti (bugiština, divehi, aramejština, gótština, i)
glossa
Profil *
Dobře, za všechny podněty děkuji, určitě to nepovažuji za kraviny, snažím se tomu porozumět a postavit aplikaci na správných základech, abychom se vyhnuli některým problémům do budoucna.
Nikdy jsem netvořil web s tolika jazyky, proto je to pro mě trochu neznámá. Hodně štěstí při tvorbě vám všem :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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