

PHP a MySQL kódování
MySQL DB: staré tabulky se švédským kódováním textů, nové s utf8_czech_ci
Web: Windows-1250
DB -> web jsem vymyslela jak korektně zobrazovat české znaky z nových i ze starých tabulek.
Web > DB prasí češtinu z utf8_czech_ci.
Spojení s DB žádné kódování nastavované nemá.
Kódování webu nemám možnost změnit - je v souboru společném pro všechny stránky webu, k němuž nemám přístup.
Nastavit kódování v DB na cp1250 jsem taky zkoušela úplně jako první, ale pak mi to prasí znaky, které tam zapisuju přes phpMyAdmina na Linuxu.
Nepomáhá ani:
$vysledek = mysql_query("SET NAMES utf8");
$vysledek = mysql_query("SET CHARACTER SET utf8");
$vysledek = mysql_query("ALTER TABLE m_kariera DEFAULT CHARACTER SET utf8 COLLATE utf8_czech_ci");
$ulice = iconv("Windows-1250", "UTF-8", $ulice);
Nějaký nápad co s tím by nebyl?
Hezky si to představuješ, ale na to, že máš část DB v nějakém švédském kódování a část v UTF8-czech a web používá kódování win1250 a nechceš konvertovat DB ani změnit kódování webu, tak marná jiná snaha. Ono je někdy kumšt zprovoznit i kódování UTF8, proto to mnozí řeší win1250.
Jenom můžu ujistit, že žádný php příkaz nebude schopen docílit správného zobrazování diakritiky bez ujednocení kódování jak webu, tak DB, takže pokud chceš mít diakritiku ok a to jak starých, tak nových textů budeš muset provést konverzi DB do win1250 a případně provést ruční korekci, jinak to nepůjde.
HEURÉKA!!! Funguje mi to, i když si myslíš, že je marná snaha. Stačilo napsat správné 2 řádky a dát je na správné místo (před insert do DB):
Celý článeček na toto téma (v češtině) je na: interval.cz.
Samozřejmě uznávám, že nejjednodušší je mít všechno ve stejném kódování a u nově dělané aplikace bych to tak určitě udělala.
V tom článku opisuje predposledný odstavec presne tvoj prípad - stránka vo Windows-1250 a databáza v UTF-8. Vyriešené to tam je normálne (SET NAMES 'cp1250').
To nastavenie character_set_connection na utf8 ti môže fungovať, ak robíš súčasne navyše tú konverziu pomocou iconv. Keby si ale použila hneď na začiatku SET NAMES 'cp1250', tak by si nepotrebovala zbytočne používať iconv. Ale načo robiť veci jednoducho...
Právě že ne. Žádné iconv nepotřebuju!!! Fakt. Se SET NAMES 'cp1250' (bez character_set_connection) to nefungovalo, to jsme zkoušeli hned na začátku. Musí tam být jak SET NAMES, tak character_set_connection. Jestli mi to nevěříš, můžeš si to zkusit sám, odhaduju, že Ti to zabere cca 15 minut.
Práveže som to skúšal.