Polskie znaki [PHP/MySQL]
Wydawać by się mogło, że kodowanie polskich znaków to rzecz banalnie prosta. Niestety, ale nie we wszystkich przypadkach tak jest. Niekiedy zdarzają się bowiem sytuacje, kiedy odczytując z bazy danych dane, spotykamy się z dziwacznymi krzaczkami.
Obecnie na polskich portalach internetowych dominują takie systemy kodowania znaków jak utf-8 oraz iso-8859-2.
Kodowanie UTF-8
znacznik head
Jeśli wybierzemy ten sposób kodowania strony, to nie dość, że będziemy musieli zadbać o to, żeby nagłówek każdej z podstron wyglądał mniej więcej tak :
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="pl" /> <meta name="Description" content="opis" /> <meta name="Keywords" content="tagi" /> <meta name="Author" content="autor" /> <title>tytuł</title> </head>
MySQL
Na początku musimy zadbać o to, żeby ustawić właściwą metodę porównywania napisów.
ALTER DATABASE `baza` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
Identyczny efekt można również uzyskać poprzez phpmyadmina (Zakładka operacje ). Nie zapominajmy jednak o tabeli :
ALTER TABLE `tabela` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
Mogło by się wydawać, że to tyle i od teraz będziemy się mogli cieszyć polskimi “końcówkami” na naszej witrynie. Niestety, ale nie zawsze tak będzie. Niekiedy trzeba będzie dołożyć jeszcze jedną linijkę. Najlepiej zaraz po nawiązaniu połączenia z bazą danych .
<?php //tutaj polaczenie z baza danych mysql_query('SET NAMES utf8');//od teraz mozna sie cieszyc polskimi znakami :) ?>
Kodowanie iso-8592-2
znacznik head
W przypadku kiedy wybrano standard iso-8592-2, należy postąpić niemal analogicznie jak w poprzednim przypadku.
<head> [...] <meta http-equiv="Content-Type" content="text/html; charset=iso-8592-2" /> [...] </head>
MySQL
ALTER DATABASE `baza` DEFAULT CHARACTER SET latin2 COLLATE latin2_general_ci
ALTER DATABASE `tabela` DEFAULT CHARACTER SET latin2 COLLATE latin2_general_ci
I na koniec jeśli nadal jest problem z polskimi znakami…
<?php //tutaj polaczenie z baza danych mysql_query("SET NAMES 'latin2'");//od teraz mozna sie cieszyc polskimi znakami :) ?>













13 czerwca 2009 o 11:40
Przeglądałem sporo artykułów ale dopiero po zastosowaniu rad z tego pojawiły się polskie znaczki w tekście pobieranym z DB MySQL.
Super ! Teraz mogę spokojnie edytować rekordy nawet z poziomu PHP Myadmina i będą polskie znaczki :-)