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.