Cześć,
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:
(IMG:
http://wgrajfoto.pl/pokazfoto/img1010/przechwytywanie9efb.png)
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ę
if (!empty($this->result) && $this->num_rows != 0
) {
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! (IMG:
style_emoticons/default/blinksmiley.gif)
Edit: Połączyłem się z bazą za pomocą mysqli i też mam krzaki!
Ten post edytował Kikert 23.10.2010, 14:40:07