Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Kodowanie] Problem z wyświetlaniem
Kikert
post 23.10.2010, 14:32:28
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 15.09.2008

Ostrzeżenie: (0%)
-----


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!

Ten post edytował Kikert 23.10.2010, 14:40:07
Go to the top of the page
+Quote Post
vonski
post 23.10.2010, 14:48:24
Post #2





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Próbowałeś:

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


?


--------------------
Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
Go to the top of the page
+Quote Post
Kikert
post 23.10.2010, 15:02:38
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 15.09.2008

Ostrzeżenie: (0%)
-----


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

Oczywiście pomógł, miszczu biggrin.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.06.2025 - 13:17