Kodowanie znaków podczas połączenia z bazą danych
Zdarza się, że stajemy przed problemem połączenia strony korzystającej z jednego typu kodowania, z bazą danych kodującą znaki w innym formacie. Jak sobie z tym poradzić?
Projektanci języka zapytań SQL dają nam do dyspozycji funkcię
SET NAMES
Jak z niej korzystać?
Edytujemy plik zawierający definicję naszego połączenia z bazą danych. Do zapytania dopisujemy wyżej wspomnianą funkcję z dołączeniem odpowiedniego dla nas kodowania. Poniżej dwa najczęściej spotykane warianty:
SET NAMES latin 2;
SET NAMES utf-8
Jeśli korzystamy z systemów CMS lub gotowych rozwiązań sklepów internetowych, sprawa się nieco komplikuj. Dochodzi jeszcze poszukiwanie odpowiedzialnego za połączenie kodu.
Poniżej kilka wskazówek do najpopularniejszych systemów:
Zen Cart (prawdopodobnie także osCommerce)
includes/classes/db/mysql/query_factory.php [linia około 37]
W przypadku Zen Cart warto prześledzić ten wątek. Jak można zauważyć, dodano następujący kod w linii 40:
$sql = "SHOW VARIABLES LIKE 'character_set_database'";
$res = $this->Execute($sql);
$charset = $res->fields['Value'];
$sql = "SET NAMES latin2";
$this->Execute($sql);
Joomla! 1.7
libraries/joomla/database/database/mysql.php