Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Nie chodzą mi polskie znaki
Forum PHP.pl > Forum > Przedszkole
Quantino
Witam, mój problem dotyczy tego, że nie chodzą mi polskie znaki w bazie danych MySQL.

Jeżeli importuję pliki to daję kodowanie w pliku CSV na utf-8 i to samo ustawiam w imporcie ale znaki nie działają, zamiast nich są znaki zapytania, a muszę zaimportować bazę, która ma w sobie polskie znaki.

Utworzyłem sam bazę danych za pomocą SQL w PhpMyAdmin i mam polskie znaki ale gdy pobieram to przez PHP to polskich znaków już nie ma.

Kolejnym problemem jest to, że nawet, gdy napiszę w PHP całą bazę danych i otworzę aplikację to wszystko przebiega pomyślnie a polskich znaków w bazie nie ma.

Zależy mi na tym, abym miał te znaki bo nie mam jak się uczyć jeżeli nawet nie mogę poprawnie korzystać z bazy danych.

Miałem taki problem na Vertrigo i teraz zainstalowałem XAMPP ale jest nadal to samo.

Z góry dziękuję za pomoc.
Fifi209
Temat: MYSQL Polskie znaki

hmm, nie można tam? Pewnie nawet nie zaglądałeś.
piotrekk
wywołaj to przed pobraniem danych z BD

$sql = mysql_query("SET names utf8", $connection);

i na pewno będzie działać
Quantino
Ok, dodałem tą linijkę kodu, którą podał piotrekk i jest dobrze na stronie wyświetlana ta baza, którą stworzyłem w PhpMyAdmin bo w niej wyświetlają się polskie znaki.

Ale mam jeszcze problem z tą bazą, którą importuję ponieważ w niej w bazie danych pojawiają się te znaki zapytania i wtedy jak wyciągam w skrypcie PHP te dane to są te krzaki, mógłby mi ktoś powiedzieć jeszcze jak ten problem rozwiązać ?
Maciek1705
ja z mysqla mocny nie jestem ale wiem że jest polecenie które zmienia kodowanie całej bazy np z win-1250 na utf oczywiście polecenie jest w mysql tylko nie pamiętam jak ono szło ale powinieneś znaleźć na googlach
minolone
Witam.

Na forum znalazłem hurtową zmianę kodowania w bazie danych jeżeli miałbyś kodowanie inne niż UTF-8 oto link do tematu.

Jeżeli masz bazę w pliku sql lub innym otwórz go w jakims edytorze i skonwertuj na utf-8, zapisz plik

przykładowa baza

  1. CREATE TABLE IF NOT EXISTS `users` (
  2. `id` int(10) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(20) NOT NULL,
  4. `login` varchar(20) NOT NULL,
  5. `password` char(40) NOT NULL,
  6. `email` varchar(255) NOT NULL,
  7. `date` date NOT NULL,
  8. PRIMARY KEY (`id`),
  9. UNIQUE KEY `login` (`login`),
  10. UNIQUE KEY `email` (`email`)
  11. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


zobacz że jest coś takiego "DEFAULT CHARSET=utf8" sprawdź czy przypadkiem nie masz jakiegoś latin ustawionego,

ustawienia bazy danych

  1. System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
  2. System porównań dla połączenia MySQL: utf8_unicode_ci


wtedy nie bedziesz potrzebował nawet przy łączeniu się z bazą tego co ci kolega podał, i najważniejsze w head

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


powinno śmigać bezproblemowo. 

Quantino
Trochę źle się wyraziłem, bo ja chcę wgrać do bazy danych same dane.

Stworzyłem sobie bazę danych i w nich tabele, metoda porównywania napisów jest ustawiona na utf8_unicode_ci, gdy importuje zawartość tabeli (mam ją w pliku CSV) to oczywiście mam to przekonwertowane na utf-8 i tak samo ustawiam w PhpMyAdmin przy imporcie ale nadal są te znaki zapytania chociaż nie powinno ich być.
minolone
Kolego pokaż ta swoją bazę danych, jeżeli ustawienia w phpmyadmin widzisz takie jak ci napisałem że powinny być to powinno być wszystko ok, może coś z bazą masz nie tak.
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.