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%)
-----


Cytat(viking @ 6.01.2016, 11:36:40 ) *
Jeżeli zrobiłeś faktycznie tak jak napisałeś to nowo wprowadzane dane powinny być zapisane jako utf-8.


Cały pierwszy rekord wprowadziłem od nowa. Oto zrzut bazy z phpMyAdmin do pliku .sql:

  1. -- phpMyAdmin SQL Dump
  2. -- version 4.3.3
  3. --
  4. -- Host: localhost
  5. -- Czas generowania: 06 Sty 2016, 11:46
  6. -- Wersja serwera: 5.6.25-1~dotdeb+7.1
  7. -- Wersja PHP: 5.5.30-1~dotdeb+7.1
  8.  
  9. SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
  10. SET time_zone = "+00:00";
  11.  
  12.  
  13. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  14. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  15. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  16. /*!40101 SET NAMES utf8 */;
  17.  
  18. --
  19. -- Baza danych: `testowiec`
  20. --
  21.  
  22. -- --------------------------------------------------------
  23.  
  24. --
  25. -- Struktura tabeli dla tabeli `php_interview_questions`
  26. --
  27.  
  28. CREATE TABLE IF NOT EXISTS `php_interview_questions` (
  29. `id` int(8) NOT NULL,
  30. `rok` text COLLATE utf8_unicode_ci NOT NULL,
  31. `miesiac` text COLLATE utf8_unicode_ci NOT NULL,
  32. `dzien` text COLLATE utf8_unicode_ci NOT NULL,
  33. `ug` text COLLATE utf8_unicode_ci NOT NULL,
  34. `typ` text COLLATE utf8_unicode_ci NOT NULL,
  35. `nazwa` text COLLATE utf8_unicode_ci NOT NULL,
  36. `zasobnik` text COLLATE utf8_unicode_ci NOT NULL,
  37. `nazwisko` text COLLATE utf8_unicode_ci NOT NULL,
  38. `imie` text COLLATE utf8_unicode_ci NOT NULL,
  39. `ulica` text COLLATE utf8_unicode_ci NOT NULL,
  40. `dzielnica` text COLLATE utf8_unicode_ci NOT NULL,
  41. `telefon` text COLLATE utf8_unicode_ci NOT NULL,
  42. `nrdomu` text COLLATE utf8_unicode_ci NOT NULL,
  43. `informacje` text COLLATE utf8_unicode_ci NOT NULL,
  44. `przeglady` text COLLATE utf8_unicode_ci NOT NULL,
  45. `montaz` text COLLATE utf8_unicode_ci NOT NULL,
  46. `zakup` text COLLATE utf8_unicode_ci NOT NULL,
  47. `naprawy` text COLLATE utf8_unicode_ci NOT NULL,
  48. `automatyka` text COLLATE utf8_unicode_ci NOT NULL,
  49. `P2000` text COLLATE utf8_unicode_ci NOT NULL,
  50. `P2001` text COLLATE utf8_unicode_ci NOT NULL,
  51. `P2002` text COLLATE utf8_unicode_ci NOT NULL,
  52. `P2003` text COLLATE utf8_unicode_ci NOT NULL,
  53. `P2004` text COLLATE utf8_unicode_ci NOT NULL,
  54. `P2005` text COLLATE utf8_unicode_ci NOT NULL,
  55. `P2006` text COLLATE utf8_unicode_ci NOT NULL,
  56. `P2007` text COLLATE utf8_unicode_ci NOT NULL,
  57. `P2008` text COLLATE utf8_unicode_ci NOT NULL,
  58. `P2009` text COLLATE utf8_unicode_ci NOT NULL,
  59. `P2010` text COLLATE utf8_unicode_ci NOT NULL,
  60. `P2011` text COLLATE utf8_unicode_ci NOT NULL,
  61. `P2012` text COLLATE utf8_unicode_ci NOT NULL,
  62. `P2013` text COLLATE utf8_unicode_ci NOT NULL,
  63. `P2014` text COLLATE utf8_unicode_ci NOT NULL,
  64. `P2015` text COLLATE utf8_unicode_ci NOT NULL,
  65. `P2016` text COLLATE utf8_unicode_ci NOT NULL,
  66. `P2017` text COLLATE utf8_unicode_ci NOT NULL,
  67. `P2018` text COLLATE utf8_unicode_ci NOT NULL,
  68. `P2019` text COLLATE utf8_unicode_ci NOT NULL,
  69. `P2020` text COLLATE utf8_unicode_ci NOT NULL,
  70. `P2021` text COLLATE utf8_unicode_ci NOT NULL,
  71. `P2022` text COLLATE utf8_unicode_ci NOT NULL,
  72. `P2023` text COLLATE utf8_unicode_ci NOT NULL,
  73. `P2024` text COLLATE utf8_unicode_ci NOT NULL,
  74. `row_order` int(8) NOT NULL
  75. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  76.  
  77. --
  78. -- Zrzut danych tabeli `php_interview_questions`
  79. --
  80.  
  81. INSERT INTO `php_interview_questions` (`id`, `rok`, `miesiac`, `dzien`, `ug`, `typ`, `nazwa`, `zasobnik`, `nazwisko`, `imie`, `ulica`, `dzielnica`, `telefon`, `nrdomu`, `informacje`, `przeglady`, `montaz`, `zakup`, `naprawy`, `automatyka`, `P2000`, `P2001`, `P2002`, `P2003`, `P2004`, `P2005`, `P2006`, `P2007`, `P2008`, `P2009`, `P2010`, `P2011`, `P2012`, `P2013`, `P2014`, `P2015`, `P2016`, `P2017`, `P2018`, `P2019`, `P2020`, `P2021`, `P2022`, `P2023`, `P2024`, `row_order`) VALUES
  82. (1, '2015', 'Grudzień', '29', 'tak', 'styczeń', 'kociol', 'Śrutowy', 'Łęcki', 'Ósmy', 'ćpan', 'ŁĄkowa', 'ĄŝĆ', '332255', '102', 'tajne', 'byly', 'byl', 'byly', 'jest', 'byl', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 1);
  83.  
  84. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  85. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  86. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Index.php: http://wklej.org/id/1897119/

Ten post edytował kaziu02 6.01.2016, 12:07:51
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: 14.10.2025 - 17:20