Snad jsem to zařadil do správný sekce, ale mám takovej zajímavej problém s kódovánim. Na stránce index.php mám nastaveno kódování na 'utf-8' ; v MySQL jsou všechny tabulky v 'utf8_unicode_ci'. Jakmile vytáhnu data s diakritikou z databáze a vypíšu je na stránku, tak mám text vepsaný staticky do stránky s '?' místo diakritiky a text vytaženej z MySQL správně
Když změnim kódování stránky na windows-1250 (8859-2), tak se to prohodí a data z MySQL jsou s '?' a statická data jsou správně. Už jsem si hrál i s 'SET NAMES utf8' atp., ale bez úspěchu - vždycky mám jeden text správně a druhý s otazníky...
Jako kódování chci používat utf-8, protože windows-1250 ani 8859-2 nepodorují všechny znaky, které potřebuji. Jakmile kódování DB i stránky nastavím na windows-1250, tak je vše v pohodě, ale neřeší to můj problém...
Asi se s tim už někdo setkal, tak snad mi někdo poradí, co s tim...
Mimochodem - server, se kterym zápasim neni WZ, takže nastavení tam budou jiný ;)
soubory ulozit v kodovani utf-8, nastavit metatag na utf-8, kodovani v db a set names na utf-8 a musi to jit. kdyztak zkus v prohlizeci vybirat ruzny kodovani, a pozoruj, pri jakym kodovani je co citelny a co necitelny
Nechápu to, koukni se schválně na tuhle stránku http://masteroftopics.manena.cz/ - kódování je všude nastavený na utf-8 a je blbě zobrazená i hlavička (author)...
Teď jsem si ještě všim, že mi validátor (W3C) hlásí
" Sorry, I am unable to validate this document because on line 9 it contained one or more bytes that I cannot interpret as utf-8 (in other words, the bytes found are not valid values in the specified Character Encoding). Please check both the content of the file and the character encoding indication. The error was: utf8 "\xC8" does not map to Unicode."
Přitom na řádku 9 mám jenom "ČLÁNKY<br />"...
nj, jenomze to "ČLÁNKY" je v iso-8859-2 nebo cp-1250 a metatagy asi taky
Tak teď jsem z toho úplně blbej ;)
Vždyť na tý stránce mám v hlavičce "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> " - takže utf-8.
Data z databáze tahám s " mysql_query("SET NAMES utf8"); " - takže taky utf-8.
A v databázi mám porovnání " utf8_unicode_ci " - takže taky utf-8.
Tak kde je problém?
patrne ten soubor, kde je ten metatag, je ulozenej v kodovani cp-1250. prohlizec si pak v metatagu precte, ze to ma brat jako utf-8, ale co je mu to platny, kdyz to v utf-8 kodovany neni
Tak ten soubor (index.php) jsem vytvořil tak, že jsem vzal texťák, pojmenoval ho index.php, napsal do něj to, co tam je, uložil a je to. Nechápu, jak můžu soubor uložit v nějakym kódování - o tom jsem nikdy neslyšel, myslel jsem si, že prohlížeč zajímá jenom meta tag...
<HTML>To je jako kdybyste šišlal. Měl by si prohlížeč myslet, že nešišláte, když mu řeknete "nešišlám" ?
Kódování souborů není žádná byrokracie. Protože výpočetní techniku vymysleli Američani, vytvořili 8bitovou ASCII tabulku znaků. Dali do ní svoje písmenka a nějaký ozdobný prvky na tvorbu formulářů. Háčky, čárky, řečtina, ruština, čínština a další abecedy? To je nezajímalo, výpočetní technika je jenom pro amíky.
Proto se začalo vymýšlet, co s tím. První myšlenka, dodnes používaná, jsou kódové podstránky. Každý bajt souboru představuje kód nějakého znaku. Kódové podstránky určovaly, kterého znaku. Např. bajt o hodnotě 0xF9 představuje v klasickém pojetí ASCII plné kolečko, v kódování Windows-1250 je to však znak ů.
Nevýhod kódových postránek je několik:
1) musí se určit, jakou kódovou stránku má prohlížeč použít
2) kódové stránky nelze mixovat (nedáte vedle sebe azbuku a ů)
Proto se přišlo s kódováním Unicode, které místo jednoho bajtu pro znak používá bajtů více. Nejznámější jsou asi klasický Unicode, který používá pro každý znak 2 bajty (máme tedy okolo 65 tisíc možných různých znaků) a UTF, který používá znaky proměnné délky (pro základních 127 znaků ascii tabulky používá jeden bajt, pro národní abecedy a různé symboly už je potřeba bajtů více).
V každém případě, ohlásíte-li meta-tagem či při komunikaci s databází, že budete dané kódování používat, musíte jej také realizovat.
Máte-li Visty, Poznámkový blok umožňuje nastavit kódování na UTF. Jinak UTF podporuje i celá řada editorů, namátkou PSPad apod.</HTML>
Kdyby to nebylo perverzní, tak bych ti políbil nohu =D
Moc díky!
<HTML>Mám to tedy brát tak, že problém je vyřešen?
EDIT 18:14: zamčeno.<style>form { display: none; }</style></HTML>
Jo, přesně tak - tahle věc mi nějak unikla, vůbec jsem si neuvědomil, že na tom taky záleží.
Ještě jednou, díky.