notatnik.net.pl

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