PHP, MySQL: Wymuszenie kodowania znaków z bazy danych
Środa, 17.07.2013
Nawet jeśli w bazie danych mamy ustawione odpowiednie kodowanie znaków, np UTF-8 i na stronie również mamy UTF-8, nadal możemy mieć problem z wyświetleniem polskich znaków.
Dzieje się tak, ponieważ kodowanie znaków w bazie danych to nie to samo, co kodowanie połączenia z bazą danych. Mimo, że dane w bazie danych zapisywane są w UTF-8, to podczas przesyłania mogą mieć całkiem inne kodowanie.
Rozwiązaniem tego problemu jest ustawienie odpowiedniego kodowania zaraz po połączeniu się z bazą:
mysql_query('SET NAMES UTF8');
Korzystamy z tego w przypadku, jeśli nie mamy dostępu do konfiguracji serwera bazy danych.
Drugim sposobem jest ustawienie w pliku konfiguracyjnym bazy danych parametru character_set_results, dzięki temu nie będziemy musieli ustawiać SET NAMES po każdym połączeniu z bazą danych.
Aby sprawdzić ustawienia kodowania znaków w bazie danych wykonujemy zapytanie:
SHOW VARIABLES LIKE 'character_set_%'
Zobacz też:
MySQL, MariaDB: jak usunąć dane z tabeli, z podzapytaniem, w którym użyta jest ta sama tabela?PHP: Zmiana kodowania znaków