Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kodowanie] Problem z wyświetlaniem
Forum PHP.pl > Forum > PHP
Kikert
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:



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:
  1. public function prepareLinks() { // Łaczy się z bazą za pomocą poniższej klasy
  2.  
  3. if ($this->menu) {
  4.  
  5. $this->links = $this->db->query("SELECT * FROM ###_menus_links WHERE `menu_id`='".Template::$modparams['menu']."'")->toArray();
  6.  
  7. }
  8.  
  9. return $this;
  10.  
  11. }

  1. class DBManager {
  2.  
  3. private static $object;
  4. protected $query;
  5. protected $result;
  6. public $num_rows;
  7.  
  8. public function __construct() { // Tutaj singletonem zwraca zawsze tą samą instancję
  9.  
  10. if (!self::$object) {
  11.  
  12. @ self::$object = new mysqli(Config::$db_host,Config::$db_user,Config::$db_password,Config::$db_name);
  13.  
  14. if (mysqli_connect_errno()) { Error::add('DBManager->__construct - Wystąpił błąd podczas lączenia z bazą danych'); }
  15.  
  16. return self::$object;
  17.  
  18. } else { return self::$object; }
  19.  
  20. }
  21.  
  22. public function query($query) { // Pobiera dane z bazy, wcześniej zamieniając ###_ w kodzie na prefix tabeli
  23.  
  24. $this->query = Validate::Query($query);
  25. @ $this->result = self::$object->query($this->query);
  26.  
  27. if ($this->result) {
  28.  
  29. $this->num_rows = $this->result->num_rows;
  30.  
  31. return $this;
  32.  
  33. } else { Error::add('DBManager->query - Baza danych nie zwróciła żadnego wyniku'); return $this; }
  34.  
  35. }
  36.  
  37. public function toArray() { // Tutaj robi z tego tablicę
  38.  
  39. if (!empty($this->result) && $this->num_rows != 0) {
  40.  
  41. for ($i = 0; $i < $this->num_rows; $i++) {
  42.  
  43. $array[] = $this->result->fetch_assoc();
  44.  
  45. }
  46.  
  47. } else { Error::add('DBManager->toArray - Tablica wyników jest pusta lub nie ma żadnych wyników'); return $this; }
  48.  
  49. return $array;
  50.  
  51. }
  52.  
  53. }


Napisałem inne rozszerzenie do tego system, które pobiera dane z bazy - w print_r też krzaki.

Pomocy! blinksmiley.gif

Edit: Połączyłem się z bazą za pomocą mysqli i też mam krzaki!
vonski
Próbowałeś:

  1.  
  2. $uchwyt_do_polaczenia->query("SET NAMES utf8"); // przy załozeniu że łączycz sie przez mysqli
  3.  


?
Kikert
Próbowałem, ale przez przypadek zakomentowałem tą linię.

Oczywiście pomógł, miszczu biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.