Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: phpMyAdmin i brak polskich znaków
Forum PHP.pl > Forum > Bazy danych > MySQL
grangtx
Witam.

Mam problem, mianowicie chcę dodawać/edytować dane z bazy bezpośrednio w phpMyAdmin. Problem polega na tym, że polskie znaki dodane bezpośrednio w phpMyAdmin na stronie wyświetlają się jako ? (znaki zapytania). Jeżeli ten sam tekst dodam do bazy przez skrypt php, sytuacja jest odwrotna - w phpMyAdmin widać krzaki, a na stronie wyświetlają się prawidłowo. Nie chodzi mi o to, aby polskie znaki wyświetlały się prawidłowo w phpMyAdmin, tylko aby przez phpMyAdmin można było dodać polskie znaki, które będą wyświetlały się poprawnie na stronie.

Język phpMyAdmin mam ustawiony na polski, wszędzie w metodach porównywania mam ustawiony utf8_polish_ci. Strona oczywiście również ma ustawiony charset utf-8.

Czy jest w phpMyAdmin opcja, dzięki której można by to naprawić? Od razu mówię - SET NAMES 'utf8' odpada, po użyciu co prawda znaki dodane przez phpMyAdmin są OK, ale znowu w krzaki zmieniają się polskie znaki dodane przez skrypt php.
Watu
Należy wejść do okienka zapytań SQL (w phpmyadminie lub w panelu administratora na forum) i wykonać zapytanie:

Kod
ALTER DATABASE `nazwa_bazy` DEFAULT CHARACTER SET latin2 COLLATE latin2_general_ci;


Gdzie za nazwa_bazy wstawiamy nazwę bazy która wyświetla się po lewej stronie ( baza z forum ). Od tej pory wszystkie tabele wgrywane do tej bazy przyjmą kodowanie latin2

Powinno pomóc wink.gif
grangtx
Niestety nie pomogło.
japolak
ja to sobie załatwilem w ten sposób


w panelu phpmyadmin zmienilem metode porównywania napisow na utf8_polish_ci

a nastepnie w php połaczenie do bazy w ten sposób:

  1.  
  2.  
  3. function connect_bd(){
  4.  
  5. $result= new mysqli('localhost', 'base', 'haslo', 'base');
  6. if (mysqli_connect_errno() === 0){
  7. $result -> query("SET NAMES 'utf8'");
  8.  
  9. if (!$result)
  10. return false;
  11. else {
  12.  
  13. return $result;
  14.  
  15.  
  16. }
  17.  
  18. }
  19. }


zerknij sobie
grangtx
Cytat(japolak @ 19.09.2011, 23:23:58 ) *
ja to sobie załatwilem w ten sposób


w panelu phpmyadmin zmienilem metode porównywania napisow na utf8_polish_ci

a nastepnie w php połaczenie do bazy w ten sposób:
  1. #
  2. $result -> query("SET NAMES 'utf8'");


Tak jak pisałem: polskie znaki dodane w phpmyadmin teraz wyświetlają się poprawnie, ale z kolei te dodane przez formularz php zamieniają się w krzaki.
japolak
to jeszcze sprawdz sobie meta tagi
w sekcji <head>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8">

oraz jak to nie pomoze
to sprawdz sobie kodowanie pliku w którym masz napisany php

jak nie wiesz jak to zrobic
to najlepiej otwórz sobie notatnik.i zapisz sobie nowy plik.php (ustawiajac kodowanie przy zapisywaniu na utf-8) a pozniej skopjuj cały kod php który napisałes w swoim juz istniejacym pliku do tego pliku ..
grangtx
Charset jest ustawiony na UTF-8, wszystkie pliki są w formacie UTF-8 (bez BOM).
japolak
no to masz kibel kolego..

..bo to sa 4 elementy ktore głownie odpowiadają za wyswietlanie znakow.. a skoro nadal masz krzaki to gdzies cos musiales przeoczyc.


ostatnia mozliwosc ktora mogles przeoczyc to
i na ktora teraz wpadlem to mozesz miec jeszcze inna Metoda porównywania napisów dla tabeli a inna dla kolumny. jesli to masz ok .. to cofnij się do tylu i sprawdź wszystko od początku.

jak ja kiedys mialem problem z tym tematem
to mnie wtedy zalatwilo to kodowanie pliku.. bo program wyswietlal mi ze mam utf8 .. a w rzeczywistosci nic takiego nie bylo.. porobilem sobie pliki od nowa w notatniku i zaczeło dzialac..

no nic .. zycze powodzenia.
grangtx
Problem rozwiązany.
japolak
Cytat(grangtx @ 20.09.2011, 00:14:07 ) *
Problem rozwiązany.


to bys sie podzielił z nami co bylo powodem tego krzaczenia
grywalny
mialem ten sam problem i dzieki wam rozwiazalem.

Trzeba ustawic kazde pole w strukturze tabeli recznie, edytowac kazdy z osobna na liscie, na utf8

potem te dwie komendy

  1. ALTER DATABASE `nazwa_bazy` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


  1. ALTER TABLE `nazwa_tabeli` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


, plus polaczenie w ten sposob jaki zostal tutaj wskazany wyzej rozwiazuje ten problem. Nie wiem po jaki ch*j jest domyslnie wszystko latin_swedish. Okropnosc.
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.