Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] Brak polskich znaków przy pobieraniu danych
Forum PHP.pl > Forum > Bazy danych > MySQL
Kleryk
Witam,

Posiadam dziwne zawikłanie w pobieraniu polskich znaków z bazy. Mam taki kod:
  1. <?php
  2. function lacz_bd()
  3. {
  4. $db = new mysqli('localhost', 'user', 'password', 'db');
  5. if (! $db)
  6. return false;
  7. $db->autocommit(TRUE);
  8. return $db;
  9. }
  10. $db = lacz_bd();
  11. $zapytanie = "SELECT * FROM `news` WHERE (profile = '".$cP."' OR profile = 2) ORDER BY `newsDate`";
  12. $wynik = $db->query($zapytanie);
  13. $ile_znalezionych = $wynik->num_rows;
  14. echo '<table>';
  15. echo '<tr><td></td></tr>';
  16. for ($i=0; $i <$ile_znalezionych; $i++)
  17. {
  18. $wiersz = $wynik->fetch_assoc();
  19. echo '<tr>';
  20. echo '<td style="font-size: 12pt;"> <b> <img style="padding-bottom:2px;" alt="-" src="img/snipbox.png">&nbsp;&nbsp;'.$wiersz['newsTitle'].'</b></td>';
  21. echo '</tr>';
  22.  
  23. echo '<tr>';
  24. echo '<td>'.$wiersz['newsContent'].'<br><br></td>';
  25. echo '</tr>';
  26. }
  27. echo '</table>';
  28. ?>


Nie pobiera mi polskich wyznaczków, więc zacząłem szukać na tym forum rozwiązania:

  1. mysql_query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");

  1. $nazwa_bazy-> query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");


I tu jestem w kropce bo obydwa sposoby nie pomagają.

Pozdrawiam
e-y-e
Mam kilka pytań:
  1. Czy w bazie masz zapisane są polskie znaki czy "krzaczki"?
  2. Czy Twoja baza na pewno jest w kodowaniu UTF8?
  3. Czy kodowanie strony na jakiej wyświetlasz ten tekst również jest w UTF8?
Kleryk
1. W bazie są normalne polskie znaki
2. Tak baza ma UTF-8
3. Tekst też jest w UTF-8 (Korzystam z Notepada++)

Pozdrawiam
Andrzej.W.
Ja wczoraj się biłem z takim problemem. Pobierałem sobie nazwy do formularza rozwijalnego. Wszystko na stronie normalnie z polskimi znakami się wyświetlało, a w menu rozwijalnym same znaki zapytania i krzaczki. Nie wiem ogółem skąd ten problem.

Dodanie parametru encoding w połączeniu, też nie zadziałało.

Moje połączenie do selecta wygląda tak,

Kod
$pdo = new PDO('mysql:host=localhost;dbname='basename;', 'root', 'hasło', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") );

znalazłem na necie wczoraj i dodałem tylko ten fragment:
Kod
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")


Też sprawdzałem czy ide jest na utf-8 i baza itd, próbowałem różnych rzeczy, ale to zadziałało.
Pozdrawiam.
Andrzej.
e-y-e
Cytat(Kleryk @ 22.04.2013, 16:32:54 ) *
1. W bazie są normalne polskie znaki
2. Tak baza ma UTF-8
3. Tekst też jest w UTF-8 (Korzystam z Notepada++)

Pozdrawiam


Zapytałem jeszcze o "Czy kodowanie strony na jakiej wyświetlasz ten tekst również jest w UTF8?" czyli czy dodałeś taki tag?
  1. <meta http-equiv="Content-type" content="text/html; charset=utf-8">


Kiui
Może ci to pomoze ale kiedyś miałem ten sam problem.
I wymyśliłem rozwiazanie po przeoraniu forum:).

moze mój kod będzie pomocny.

  1.  
  2. function db($zapotp)
  3. {
  4. $db = new mysqli('localhost','root','','db');
  5. $langadb = "SET NAMES utf8";
  6. mysqli_query($db, $langadb);
  7. return mysqli_query($db, $zapotp);
  8.  
  9. }
  10.  
  11.  
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.