22. ledna jsme aktualizovali PHP na našich serverech. Pokud máte svůj web v kódování iso-8859-2 a nemáte po připojení k databázi nastavenou správnou definici kódování, mohli jste si všimnout špatného zobrazování diakritiky.
Opravení tohoto problému je jednoduché. Stačí hned po připojení k databázi do vašeho PHP skriptu přidat příkaz:
SET CHARACTER SET latin2
V souvislosti s novým nativním klientem MySQL v poslední verzi PHP již toto nastavení nemůžeme udělat centrálně a tento příkaz je vyžadován. Pokud máte stránky v iso-8859-2, mohlo vám to dříve fungovat i bez této definice a diakritika se zobrazovala správně.
Nastavením definice SET CHARACTER SET v podstatě oznámíte databázi, v jakém kódování s ní chcete komunikovat. Na straně serveru se potom data přeloží do kódování databáze.
O data se bát nemusíte, s těmi se nestalo nic. Problém spočívá pouze ve zobrazení dat z databáze na webu, který má nastaveno jiné kódování, než v jakém jsou původně data uložena.
Více lze o této problematice nalézt zde na blogu Jakuba Vrány.