< Przeglądasz > Start / PHP / Blog article: Polskie znaki [PHP/MySQL]

Polskie znaki [PHP/MySQL]

31 marca 2009 | 1 Komentarz | Opublikowany w PHP

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 :

&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;meta http-equiv="Content-Language" content="pl" /&gt;
&lt;meta name="Description" content="opis" /&gt;
&lt;meta name="Keywords" content="tagi" /&gt;
&lt;meta name="Author" content="autor" /&gt;
&lt;title&gt;tytuł&lt;/title&gt;
&lt;/head&gt;

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 .

&lt;?php
//tutaj polaczenie z baza danych
mysql_query('SET NAMES utf8');//od teraz mozna sie cieszyc polskimi znakami :)
?&gt;

Kodowanie iso-8592-2

znacznik head

W przypadku kiedy wybrano standard iso-8592-2, należy postąpić niemal analogicznie jak w poprzednim przypadku.

&lt;head&gt;
[...]
&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8592-2" /&gt;
[...]
&lt;/head&gt;

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…

&lt;?php
//tutaj polaczenie z baza danych
mysql_query("SET NAMES 'latin2'");//od teraz mozna sie cieszyc polskimi znakami :)
?&gt;
Dodaj Komentarz Przeczytano 1674 razy, 1 jak dotąd dzisiaj |
Tagi: , ,

Podobne artykuły

Śledź Dyskusję

1 Komentarz do “Polskie znaki [PHP/MySQL]”

  1. Mahiatyn Napisał:

    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 :-)

IMG_4002IMG_3468DSC02310PhotoCap_001cookiemagsnEO_IMG_IMG_6221DSC08832芸術工学会 春季大会 2009TF Party - Shave and a HaircutWedding Cake