Kodowanie oraz metodę porównywania napisów dla bazy danych zmieniamy zapytaniem:
ALTER DATABASE `nazwa_bazy` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
Kodowanie oraz metodę porównywania napisów dla tabeli zmieniamy zapytaniem:
ALTER TABLE `nazwa_tabeli` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
Kodowanie wysyłane w nagłówku ustawia się poprzez dodanie odpowiedniego kodu w sekcji HEAD dokumentu HTML.
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
To w zasadzie powinno sprawić że polskie znaki będą wyświetlały się poprawne, jednakże często zdarza się że nasz klient (zazwyczaj skrypt PHP), nawiązuje połączenie z baza w innym kodowaniu (spowodowane jest to konfiguracją serwera www). W takim przypadku należy ustawić odpowiednie kodowanie połączenia. Jeśli korzystamy z PDO kod będzie wyglądał mniej więcej tak:
$dbh = new PDO ('mysql:host=localhost;dbname=nazwa_bazy', 'uzytkownik', 'haslo'); $dbh -> query ('SET NAMES utf8'); $dbh -> query ('SET CHARACTER_SET utf8_unicode_ci');
Analogicznie dla rozszerzeń mysql oraz mysqli. To by było na tyle. W następnym artykule z serii "Polskie znaki w bazie danych" opiszę proces przenoszenia bazy na nowy serwer. Jeśli masz jakiekolwiek pytania to zapraszam na forum.
W przypadku mysqli zalecana składnia to:
$mysqli->set_charset("utf8");
Owszem, ale nie to było ideą tego artykułu. Poza tym chciałem aby można to również zastosować używając rozszerzenia mysqli bądź mysql.
Skoro o PDO mowa, warto zwrócić uwagę na PDO::MYSQL_ATTR_INIT_COMMAND miast wysyłać zapytania "ręcznie".