Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z kodowaniem w UTF8
Forum PHP.pl > Forum > PHP
Flaszka
Witam,

potrzebuje pomocy bo nie dam rady z tym problemem. Nie kumam czemu to nie chce działać. DOSTAJE JUŻ NERWICY KOLEJNY DZIEŃ

~~~~~~~~~~
Problem:
brak polskich znaków przy wyciąganiu z bazy danych, po za tym polskie znaki są gdy wpisze je sam w plik .php

EFEKT:
zamiast : ą, ż, ź, ć, ń, ó, ł, ę, ś
mam :

Przy zalogowaniu się do mysql i zrobieniu selecta na bazie polskie znaki w tabeli są widoczne

~~~~~~~~~~
Technologie:
Linux version 2.6.26-2-686 (Debian 2.6.26-19lenny1)
MySQL: 5.0.51a-24+lenny2 (Debian)
Apache2
PHP 5.0

~~~~~~~~~~
Zapis plików:
Notepad++ w UTF8

~~~~~~~~~~
skrypt na utworzenie tabeli:
user | CREATE TABLE `user` (
`user_id` int(11) unsigned NOT NULL auto_increment,
`rec_answer` varchar(45) default NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `unique_login` (`login`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 PACK_KEYS=0

~~~~~~~~~~
Co zrobiłem:
<?php header("Content-Type: text/html; charset=UTF-8"); ?>

// połączenie do bazy danych:
$db=mysql_connect($serwer,$login,$haslo);
mysql_query("SET NAMES 'utf8'",$db);
mysql_query("SET collation_server=utf8_general_ci",$db);
mysql_select_db($baza,$db);

// pobieranie danych :
$wynik = mysql_query("SELECT rec_answer from user");

// wyświetlanie danych
while($rekord = mysql_fetch_array($wynik)) {
echo "<tr><td>".$rekord['rec_answer']."</td>";
echo "</tr>";

~~~~~~~~~~
ZMIENNE Z MYSQL (wyświetlone już z przeglądarki w tym samym pliku, pobrane z bazy, SHOW VARIABLES):
character_set_client - utf8
character_set_connection - utf8
character_set_database - utf8
character_set_filesystem - binary
character_set_results - utf8
character_set_server - utf8
character_set_system - utf8
character_sets_dir - /usr/share/mysql/charsets/
collation_connection - utf8_general_ci
collation_database - utf8_general_ci
collation_server - utf8_general_ci

~~~~~~~~~~
PHPMYADMIN ustawione:
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
System porównań dla połączenia MySQL: utf8_general_ci

Pozdrawiam
Flaszka
webcitron
A kodowanie (sekcja head) w dokumencie HTML ?
Daiquiri
Nie bardzo rozumiem co Ci nie działa. Znaki nie wyświetlają się przy pobieraniu danych z bazy czy w ogóle w pliku? Jeżeli w ogóle pliku to stwórz nowy dokument w notepad++ z już ustawionym kodowaniem UTF i dopiero wtedy wklej tam zawartość. W innym przypadku być może dane w bazie są źle zakodowane.

//BTW w przedszkolu jest milion problemów i rozwiązań dotyczących kodowania.
Flaszka
Cytat(Daiquiri @ 30.11.2009, 21:29:28 ) *
Nie bardzo rozumiem co Ci nie działa. Znaki nie wyświetlają się przy pobieraniu danych z bazy czy w ogóle w pliku? Jeżeli w ogóle pliku to stwórz nowy dokument w notepad++ z już ustawionym kodowaniem UTF i dopiero wtedy wklej tam zawartość. W innym przypadku być może dane w bazie są źle zakodowane.

//BTW w przedszkolu jest milion problemów i rozwiązań dotyczących kodowania.


Przy pobieraniu z bazy. Na innym forum dał mi ktoś dobry trop, którym poszedłem i okazało się, że wina leży w sposoie zasilania bazy danych. Robiłem inserty poprzez konsole mysql przez co wchodziły dane w ISO-8859-2. Przy dodawaniu rekordów z poziomu PHPMyAdmin jest w porządku.

PS. W przedszkolu jest może i milion rozwiazań, ale żadne nie poruszało problemu opisanego przeze mnie.

Dziękuję za zainteresowanie się tematem. Oficjalnie sprawa zamknięta smile.gif
darko
To nieoficjalnie: nie rób insertów przez konsolę mysql, ale przez phpMyAdmin i/lub poprzez formularz na stronie www z kodowaniem utf-8
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.