Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Błędne kodowanie znaków w bazie danych
Forum PHP.pl > Forum > Przedszkole
mikajlo
Witam,
mam taką sytuację. Posiadam stronę WWW, która sobie egzystuje w sieci. Wszystko jest ok i nie ma z nią problemów. Dzisiaj pierwszy raz w sumie miałem okazję zajrzeć do bazy danych przez phpMyAdmin i okazuje się, że wszystkie teksty zapisane w bazie posiadają 'dziwne' znaczki (tylko polskie znaki takie są..).

Rozejrzałem się trochę w temacie i okazuje się, że to przypadłość kodowania znaków.. Aktualnie wygląda to u mnie tak:

Baza danych:
Metoda porównań napisów: utf8_general_ci
Kodowanie całej bazy: utf8_general_ci

W metadanych strony mam ustawione kodowanie: <meta http-equiv="content-type" content="text/html; charset=utf8" /> (ale 'po stronie' WWW wszystko wyświetla się w porządku).

W pliku php, gdzie występuje połączenie z bazą danych znalazłem jeszcze coś takiego:

  1. mysql_connect($GLOBALS['dbhost'], $GLOBALS['dbuser'], $GLOBALS['dbpass']) or die(mysql_error());
  2. mysql_select_db($GLOBALS['dbname']);
  3. mysql_query('set names latin2'); //gdzie podobno to może mieć jakieś znaczenie


Podrzucam jeszcze screeny jak to wszystko wygląda:


O co w ogóle taki krzyk / co chciałbym osiągnąć?

Chciałbym przeprowadzić takie operacje, aby ich ostatecznym rezultatem było:
- poprawnie wyświetlany tekstu na stronie WWW (czyli tak jak jest teraz)
- poprawnie wyświetlanie (kodowanie) tekstu w bazie danych

Pozdrawiam i czekam na jakieś wskazówki,
M.
viking
Skoro w bazie jest utf-8 a na stronie latin2 skąd zdziwienie?
mikajlo
@viking - dzięki za wypowiedź, ale ja nic nie pisałem, że jestem zdziwiony.. Przedstawiłem całą 'sytuację' z punktu widzenia osoby - laika w temacie. Poza tym ostatecznie chodzi mi o sposób rozwiązanie tego problemu.
viking
Rozwiązaniem jest przekonwertowac wszystko na utf8 ale ja bym to zostawił na najbliższe większe przepisanie kodu. Musisz się tez pozbyć funkcji mysql ktore zostały usunięte w php7. Zależy jak duże to jest.
mikajlo
Rozumiem. W sumie nie chciałbym na ten moment tego ruszać bardziej niż to, co potrzebuje. A potrzebuję na ten moment mieć poprawne kodowanie w bazie danych.

Cytat(viking @ 27.02.2016, 22:01:47 ) *
Rozwiązaniem jest przekonwertowac wszystko na utf8 ..


A jakie są potrzebne czynności do przekonwertowania tego na utf8? Istnieje jakieś polecenie SQL, które przekonwertuje mi tą całą bazę danych ?
com
temat poruszany x razy na tym forum poszukaj w wyszukiwarce smile.gif
mikajlo
Dla potomnych: pomogło przekonwertowanie całości bazy danych: encoding ISO-5589-2; decoding: UTF-8.

pzdr,
M.
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.