Jesteś tutaj: webmade.org >> porady >> php + mysql
autor: Mateusz Pilszek, ostatnia modyfikacja: 2007-03-26
Czy zdarzyła Ci się sytuacja, kiedy próbujesz wyświetlić na stronie ciąg znaków pobrany z bazy danych, jednak zamiast polskich liter widzisz znaki zapytania (albo inne dziwne znaki)? Przyczyna może być prosta: klient wywoływany z poziomu PHP nawiązuje połączenie w innym kodowaniu niż zdefiniowane na serwerze MySQL (np. klient: latin1, serwer: utf8). W takim przypadku następuje automatyczna konwersja kodowania, która czasami zwraca nieprzewidywalne wyniki.
Należy więc ustawić kodowanie połączenia na takie, w jakim działa baza danych. Aby zidentyfikować kodowanie znaków w naszej bazie, możemy posłużyć się programem phpMyAdmin. Gdy już je ustalimy, musimy wykonać odpowiednie zapytanie do bazy. Posłuży do tego instrukcja SQL: SET NAMES.
Jeśli korzystamy z rozszerzenia mysql, wystarczy po funkcji mysql_connect wywołać funkcję mysql_query, podając w niej nazwę odpowiedniego kodowania:
$polaczenie = mysql_connect('host', 'login', 'hasło') or die('Błąd!'); mysql_query("SET NAMES 'latin2'");
W tym przypadku zostało użyte kodowanie latin2. Dla polskich znaków często spotyka się także cp1250 oraz utf8.
Zmiana kodowania połączenia w przypadku, gdy używamy rozszerzenia mysqli jest także bardzo prosta:
$polaczenie = @new mysqli('host', 'login', 'haslo', 'nazwa bazy danych'); if (mysqli_connect_errno() === 0){ $polaczenie -> query("SET NAMES 'latin2'"); }
Na stronie mysql.com znajdziemy pełną listę kodowań znaków obsługiwanych przez serwer MySQL.
Mateusz Pilszek
szukaj: kodowanie set names character set mysql mysqli sql
Osoby czytające tę publikację przeglądały również:
© 2004-2008 copyright by webmade.org