Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP][SQL] Problem z kodowaniem
Forum PHP.pl > Forum > Przedszkole
edzio27
Witam.

Któryś dzień meczę sie z kodowaniem w mojej bazie danych. Stworzyłem aplikacje która zczytuje zawartość stony html i zapisuje ją do rekordu w tabeli bazy danych. Korzystam z localhosta przy pomocy XAMPP wersja 1.7.2. Problem polega na zapisywaniu krzaków w bazie. Posiadam następujące kodowania:
baza danych: utf8_general_ci
tabela: utf8_general_ci
System porównań dla połączenia MySQL: utf8_polish_ci
W skrypcie mam ustawione: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Dając w skrypcie komende:

  1. echo $mysql->character_set_name();

Wypisuje mi:

  1. latin1


Jeżeli dodatkowo w swoim skrypcie ustawię mysql->set_charset("utf8") to wtedy stronę zapisuje w bazie do pierwszej napotkanej polskiej litery a reszte wywala.

Prosiłbym o wskazówki co robie nie tak nerdsmiley.png
sliwa007
jak łączysz się z bazą danych to dodaj:

  1. mysql_query("SET NAMES 'utf8'");


czyli:

  1. mysql_connect('localhost', $user, $password);
  2. @mysql_select_db($database) or die ("Nie udalo sie wybrac bazy danych");
  3. mysql_query("SET NAMES 'utf8'");
Damonsson
A przy łączeniu się z bazą danych ustawiasz kodowanie?

@up to miałem na myśli, kolega mnie uprzedził tongue.gif
edzio27
@ sliwa007, Damonnson

Po wpisaniu komendy :

  1. $abc = mysqli_connect( 'localhost', 'root', 'pass');
  2. $abc->select_db('data') or die ("Nie udalo sie wybrac bazy danych");
  3. mysqli_query("SET NAMES 'utf8'");


ciągle mam krzaki w bazie typu:


syngress
Na początku skryptu wbij sobie:

  1. mysql_query('SET CHARACTER SET latin2');
  2. mysql_query('SET collation_connection = latin2_general_ci');
edzio27
Niestety nie pomogło sad.gif
Damonsson
No a jak zrobisz to co napisał @sliwa007 i dasz echo, to jakie masz kodowanie?
edzio27
Robie takie coś:

  1. $mysqli=new mysqli('localhost', 'root', 'pass', 'data');
  2. $mysqli->query("SET NAMES 'utf8'");
  3.  
  4. $charset = mysqli_character_set_name($mysqli);
  5. printf ($charset);


i otrzymuję:

  1. latin1


W czym jest problem że nie chce mi ustawić kodowania na utf8 ? ohmy.gif
Damonsson
a spróbuj to: mysqli_set_charset($mysqli, "utf8")
edzio27
Witam.
Chcaiłbym wrócić do tematu gdyż ciągle nie udało mi się rozwiązać kwesti złego kodowania. Wcześniej widziałem że rekordy są źle zapisywane w bazie, a teraz zauważyłem że bez łączenia z bazą są źle wyświetlane w przeglądarce. Więc chwilowo kodowanie bazy możemy olać. Ustawione mam:
- kodowanie pliku utf8 bez boom
- ustawione <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Problem leży gdzieś po stronie XAMPP-a, wydaje mi się że w ustawieniach php.

Czy ktoś może zarzucić jakimiś trafnymi podpowiedziami?

Pozdrawiam Edzio27
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.