Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Problemy z kodowaniem, Krzaczki w bazie lub w tabeli
kaziu02
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.01.2016

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


Witam,

Tworzę bazę danych klientów. Wszystko wygląda tak: baza danych MySQL, z której są pobierane dane do tabeli znajdującej się na stronie WWW. Chcę teraz ustawić jedno kodowanie, tak aby nie mieć krzaczków w bazie danych po jej eksporcie z phpMyAdmina.

Kierowałem się tymi poradnikami:

http://www.php.pl/Wortal/Artykuly/Pomysly-...e-znaki-a-MySQL
http://www.smf.pl/index.php?topic=9539.0

1.Ustawiłem kodowanie bazy danych oraz tabel (metoda porównywania napisów) na: utf8_unicode_ci

2.Ustawiłem domyślne kodowanie w confingu serwera MySQL (my.cnf) na:

  1. character-set-server=utf8
  2. collation-server=utf8_unicode_ci


3. Ustawiłem kodowanie w meta strony WWW:

  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />


4. Dodałem ustawienia regionalne do swojego skryptu PHP:

  1. <?php
  2. //Ustawienie strefy czasowej
  3. date_default_timezone_set('Europe/Warsaw');
  4. //Ustawienie kodowania dla bilbioteki mbstring
  5. mb_internal_encoding('UTF-8');
  6. //zmiana ustawień regionalnych na polski
  7. setlocale(LC_ALL, 'pl_PL.UTF-8','pl.UTF-8','pol.UTF-8','plk.UTF-8','polish.UTF-8','poland.UTF-8');
  8. //domyślne kodowanie dla wyjściowego dokumentu php; pozostaw puste aby wysłać tylko "Content-type: text/html" zgodnie z default_mimetype; jest to kodowanie wysyłane w nagłówku odpowiedzi HTTP
  9. //ini_set('default_charset', 'UTF-8');
  10. //nagłówek definiujący typ treści oraz kodowanie
  11. header('Content-type: text/html; charset=utf-8');


5. Ustawiłem w jakim kodowaniu PHP ma się porozumiewać z MySQL:

  1. $link = mysql_connect("localhost", "****", "****") or die(mysql_error());
  2. mysql_query("SET NAMES utf8");
  3. mysql_query("SET CHARACTER_SET utf8_unicode_ci");
  4. require_once("dbcontroller.php");
  5. $db_handle = new DBController();
  6. $sql = "SELECT * from php_interview_questions";
  7. $faq = $db_handle->runQuery($sql);
  8. ?>


W tym momencie nie mam polskich znaków ani na stronie WWW, ani w bazie danych po eksporcie.
Jeśli nie wykonam punktu 5 to mam polskie znaki na stronie WWW, ale w bazie danych dalej są krzaki.

Gdzie tkwi problem?

Chcę teraz ustawić prawidłowo kodowania zanim dodam kilka tysięcy rekordów...

Ten post edytował kaziu02 5.01.2016, 19:38:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kaziu02
post
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.01.2016

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


DBController to skrypt do łączenia się z bazą danych. Korzystałem z gotowca, żeby móc edytować komórki w tabeli bezpośrednio przez www.

  1. <?php
  2. class DBController {
  3. private $host = "localhost";
  4. private $user = "****";
  5. private $password = "***";
  6. private $database = "***";
  7.  
  8. function __construct() {
  9. $conn = $this->connectDB();
  10. if(!empty($conn)) {
  11. $this->selectDB($conn);
  12. }
  13. }
  14.  
  15. function connectDB() {
  16. $conn = mysql_connect($this->host,$this->user,$this->password);
  17. return $conn;
  18. }
  19.  
  20. function selectDB($conn) {
  21. mysql_select_db($this->database,$conn);
  22. }
  23.  
  24. function runQuery($query) {
  25. $result = mysql_query($query);
  26. while($row=mysql_fetch_assoc($result)) {
  27. $resultset[] = $row;
  28. }
  29. if(!empty($resultset))
  30. return $resultset;
  31. }
  32.  
  33. function numRows($query) {
  34. $result = mysql_query($query);
  35. $rowcount = mysql_num_rows($result);
  36. return $rowcount;
  37. }
  38. }
  39. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 6.10.2025 - 19:10