właśnie piszę dosyć złożony skrypt i mam problem z kodowaniem. Pierwotnie wszystko było napisane w formacie Windows 1250, teraz zamieniłem to na UTF-8.
Wystąpił problem. Dane pobierane z bazy danych są wyświetlane bez polskich znaków. Reszta znaków z pliku wyświetla się OK:

W bazie mam ustawione kodowanie UTF-8 dla wszystkich tabel, pól i samej bazy. Dane są wpisane poprawnie, wyświetlają się w phpMyAdmin.
Kod pobierający dane z bazy:
public function prepareLinks() { // Łaczy się z bazą za pomocą poniższej klasy if ($this->menu) { $this->links = $this->db->query("SELECT * FROM ###_menus_links WHERE `menu_id`='".Template::$modparams['menu']."'")->toArray(); } return $this; }
class DBManager { protected $query; protected $result; public $num_rows; public function __construct() { // Tutaj singletonem zwraca zawsze tą samą instancję if (!self::$object) { @ self::$object = new mysqli(Config::$db_host,Config::$db_user,Config::$db_password,Config::$db_name); if (mysqli_connect_errno()) { Error::add('DBManager->__construct - Wystąpił błąd podczas lączenia z bazą danych'); } return self::$object; } else { return self::$object; } } public function query($query) { // Pobiera dane z bazy, wcześniej zamieniając ###_ w kodzie na prefix tabeli $this->query = Validate::Query($query); @ $this->result = self::$object->query($this->query); if ($this->result) { $this->num_rows = $this->result->num_rows; return $this; } else { Error::add('DBManager->query - Baza danych nie zwróciła żadnego wyniku'); return $this; } } public function toArray() { // Tutaj robi z tego tablicę for ($i = 0; $i < $this->num_rows; $i++) { $array[] = $this->result->fetch_assoc(); } } else { Error::add('DBManager->toArray - Tablica wyników jest pusta lub nie ma żadnych wyników'); return $this; } return $array; } }
Napisałem inne rozszerzenie do tego system, które pobiera dane z bazy - w print_r też krzaki.
Pomocy!

Edit: Połączyłem się z bazą za pomocą mysqli i też mam krzaki!