Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z kodowaniem znaków w MySQL
Forum PHP.pl > Forum > Bazy danych
Zagiewa
Witam. Mam problem związany z kodowaniem znaków, a konkretniej mówiąc z ich wyświetlaniem. Cała strona używa kodowanie ISO-8859-2. Do tej pory tworząc tabele w phpmyadmin nie zwracałem uwagi na to jakie kodowanie stosuje do swoich tabel - po prostu działały. Obecnie po utworzeniu tabeli, dodałem rekord z treścią gdzie oczywiście znalazły się polskie ogonki (ą, ę, ł, ć, itd.) Gdy pobieram dane z bazy i wyświetlam do strony widzę kleksy sad.gif Bawiłem się, ze zmianami kodowania znaków w bazie na utf8_polska_ci i latin2_general_ci ale bez skutku (zmieniałem zarówno kodowanie całej tabeli jak i poszczególnych rekordów) i bez skutku. Wiecie co może być nie tak?

Byłbym wdzięczny za jakąś poradę.
emmix
Gdy ja walczyłem z polskimi znakami pomógł mi artykuł:
http://tosiek.pl/o-co-chodzi-z-latin1-i-dl...-polskie-znaki/

Zrobiłem na początku PHP

ini_set('default_charset', 'UTF-8');

a potem ustawienie kodowania dla połączenia z mysql
$pdo = new PDO($dsn, $user, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES latin1"));

Najbardziej zdziwiło mnie, że kodowanie latin1, ISO-8859-1 nie obsługuje polskich znaków ani nie istnieją one w tym kodowaniu smile.gif


Oczywiście Ty możesz mieć inne kodowania, ale może coś zadziała.
Ogólnie jednym jest kodowanie w bazie, a jeszcze innym kodowanie połączenia. To potrafi się zmieniać nawet w zależności od hostingu.

Majzok
Dwie podpowiedzi na początek:
1. Sprawdź czy w znaczniku meta masz ustawione dobre kodowanie
2. Sprawdź czy pliki php masz ZAPISANE w tym samym kodowaniu

PS: polecam utf8 winksmiley.jpg
tr@k
Użyj SET NAMES do ustawienia kodowania przed pobraniem danych
webasek
Po pierwsze sprawdź czy dodając rekord "z ręki" do bazy danych dodaje się bez problemu jeśli tak to problem jest z kodowanie pliku najprawdopodobniej masz zapisany plik w win albo czymś takim a kodowanie dokumentu całego (wyświetlanie strony) w innym kodowaniu masz i tu jest problem zmień kodowanie pliku.
toaspzoo
W bazie danych w strukturze ma być ustawione na:
  1. utf8_unicode_ci


A na stronie w sekcji head:
  1. <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=iso-8859-2">



Pozdrawiam
krzysztof_kf
Cytat(Zagiewa @ 15.11.2010, 20:17:06 ) *
Witam. Mam problem związany z kodowaniem znaków, a konkretniej mówiąc z ich wyświetlaniem. Cała strona używa kodowanie ISO-8859-2. Do tej pory tworząc tabele w phpmyadmin nie zwracałem uwagi na to jakie kodowanie stosuje do swoich tabel - po prostu działały. Obecnie po utworzeniu tabeli, dodałem rekord z treścią gdzie oczywiście znalazły się polskie ogonki (ą, ę, ł, ć, itd.) Gdy pobieram dane z bazy i wyświetlam do strony widzę kleksy sad.gif Bawiłem się, ze zmianami kodowania znaków w bazie na utf8_polska_ci i latin2_general_ci ale bez skutku (zmieniałem zarówno kodowanie całej tabeli jak i poszczególnych rekordów) i bez skutku. Wiecie co może być nie tak?

Byłbym wdzięczny za jakąś poradę.



Witam musisz w szczególności ujednolicić kodowanie dla całej bazy danych , tabel , i kolumn najlepiej żeby to było kodowanie utf-8 jeżeli masz kodowanie utf-8 ustawione w bazie danych to musisz mieć także takie same kodowanie dla całej strony .
toaspzoo
ale wiesz, że zamiast polskich znaków wstawiasz odpowiedniki? http://www.kurshtml.boo.pl/generatory/unicode.html
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.