webmaster webmastering webdesign

Jesteś tutaj: webmade.org >> porady >> php + mysql

Ustalanie kodowania połączenia z bazą danych MySQL

autor: Mateusz Pilszek, ostatnia modyfikacja: 2007-03-26

szukaj: kodowanie kodowanie set names set names character set character set mysql mysql mysqli mysqli sql sql

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.

Rozszerzenie mysql

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.

Rozszerzenie mysqli

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'");
}

Lista obsługiwanych kodowań znaków

Na stronie mysql.com znajdziemy pełną listę kodowań znaków obsługiwanych przez serwer MySQL.

Mateusz Pilszek

Osoby czytające tę publikację przeglądały również:

Chcesz zostać programistą?

Poznaj 6 kroków do efektywnej
nauki programowania!

 

valid XHTML
valid CSS
© 2004-2008 copyright by webmade.org