Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> kodowanie do bólu, Problem chyba trochę odmienny od dotychczasowych
kaitux
post 28.12.2007, 09:10:37
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.11.2007

Ostrzeżenie: (0%)
-----


Witam,
temat powracający na forum nieustannie, mianowicie chodzi o kodowanie w bazie. Jakiś czas temu zacząłem stawiać sobie nowy serwerek od podstaw. Przyszedł czas na przeżucenie baz danych. Na początku w myadminie miałem krzaki ale po dokonaniu kilku zabiegów jest wszystko ok. Problem polega jednak na tym, że na stronie dane pobierane z bazy zamiast polskich znaków mają "?". Przeglądam baze przez myadminia i wszystko jest ok, są polskie znaczki, edytuje i nadal wszystko jest ok ale przez moją stronkę już ok nie jest. Nie mam pojęcia dlaczego tak się dzieję. Prosz o pomoc.
Pzdr

A dziwne bo przeciez czym innym jest myadmin jak nie strona www. Tak więc wygląda mi to na problem z samym kodowaniem strony. Kiedy zmienie w myadminie język z pl na en to wszystkie polskie znaki zmieniają się na "?" tak jak na mojej stronie. Tak więc wychodzi na to, że niby kodowanie strony jesst nie takie jak powinno :/ a mam iso-8859-2

Ten post edytował kaitux 28.12.2007, 09:30:00
Go to the top of the page
+Quote Post
pafka
post 28.12.2007, 10:48:06
Post #2





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 8.01.2005

Ostrzeżenie: (0%)
-----


na stronie po polaczeniu sie z baza wykonaj jeszcze

mysql_query("SET NAMES LATIN2");

i zobacz czy dziala
Go to the top of the page
+Quote Post
kaitux
post 28.12.2007, 11:31:38
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.11.2007

Ostrzeżenie: (0%)
-----


Teraz jest ok. Tylko dlaczego kiedy caly skrypt stal na starym serwerze to wszystko latalo bez dodatkowych zapytan? Czy jest to zwiazane z nowa wersja mysql?

A wlasnie smile.gif zapomnialem: dziekuje bardzo, teraz jest ok, wielki PLUS dla Ciebie.

Jak sie okazuje Twoj sposob dziala ale nie do konca. Kiedy dodam zapytanie do skrypciku na szybkiego dla testu wyciagajacego dane z bazy dziala ok. Jednakze nie pomaga to w przypadku projektu ktory tworze :/ w ktorym bedzie juz kilka tysiecy zapytan. Nie pomaga nawet jak dam mysql> SET CHARACTER SET latin2;
Ten patent dziala w przypadku jednego pliku testowego ale nie w przypadku projektu, niewiedziec czemu.

Ok niby działa, problem polega na tym że takie ekstra zapytanie musiałbym wykonywać przed każdym pobieraniem danych z bazy, a jak już pisaem w całym skrypcie mam kilka tysięcy takich zapytań. Może wie ktoś jak tą sprawę uprościć?

Ten post edytował kaitux 28.12.2007, 11:01:41
Go to the top of the page
+Quote Post
pafka
post 28.12.2007, 11:37:26
Post #4





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 8.01.2005

Ostrzeżenie: (0%)
-----


widocznie na starym serwerze baza byla tak skonfigurowana ze domyslnym kodowaniem bylo latin2

na nowym widocznie jest inne ( np: jakis "swedish" smile.gif) i dlatego po polaczeniu trzeba przestawic "kodowanie bazy"

nie za bardzo rozumiem o co chodzi z "plikami tekstowymi" i projektem ...

mam nadzieje ze wszystkie Twoje skrypty korzystaja z tego samego polaczenia z baza ( a nie w kazdym masz osobno zdefiniowane nowe polaczenie questionmark.gif jesli masz w kazdym osobno, to w kazdym skrypcie musisz dodac "SET NAMES ..." .. a najlepiej przerobic skrypty by mialo wspolne polaczenie np: poprzez klase krora sie laczy z baza w oparciu o dane ktore masz w jakims piku konfiguracyjnym)

ewentualnie mozesz miec taki problem, ze czesc tabel masz zadeklarowane jakie inne kodowania, a dane w nich trzymasz w latin2 ... wtedy baza moze zglupiec przy konwersji

jesli masz dostep do serwera DB i mozesz w nim zmienic konfiguracje, to zmien na defaultowe kodowanie na latin2 ...
Go to the top of the page
+Quote Post
kaitux
post 28.12.2007, 11:50:41
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.11.2007

Ostrzeżenie: (0%)
-----


mam konfiga db.ini.php i tu ma zadeklarowane co trzeba zeby sie polaczyc.
potem daje tylko require_once('db.ini.php');
rzeczywiscie serwer mial zadeklarowane swdish wiec mu to pozmienialem ale po restarcie skubaniec spowrotem przywraca do domyslnych. wyglada to tak:

+---------------------------------+-----------------------------+
| Variable_name | Value |
+---------------------------------+-----------------------------+
| character_set_client | latin2 |
| character_set_connection | latin2 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin2 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| collation_connection | latin2_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |


chodzilo mi o plik testowy a nie tekstowy smile.gif kozystal z tego samego polaczenia co caly projekt
Go to the top of the page
+Quote Post
pafka
post 28.12.2007, 12:04:29
Post #6





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 8.01.2005

Ostrzeżenie: (0%)
-----


dokladnie jak ustawic konfiguracje bazy poszukaj w manualu

a sprawdz jeszcze jakie kodowania masz ustawione dla tabel, czy wszedzie takie samo czy rozne questionmark.gif

require_once('db.ini.php'); <- tutaj masz zawarte tez "set names" questionmark.gif
Go to the top of the page
+Quote Post
kaitux
post 28.12.2007, 12:38:39
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.11.2007

Ostrzeżenie: (0%)
-----


DEFINE ('DB_USER', ***');
DEFINE ('DB_PASSWORD', '******');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', '*****');
$dbc = @mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) OR die (header ("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/access_denied.php"));
@mysql_select_db (DB_NAME) OR die (header ("Location: http://" . $_SERVER['HTTP_HOST'] .dirname($_SERVER['PHP_SELF']) . "/access_denied.php"));
mysql_query("SET NAMES LATIN2");

powyzej zawartosc pliku db.ini.php. Tak wiec jesli dodam do tego pliku "SET NAMES..." to nie dziala, jednak jesli dodam "SET NAMES..." bezposrednio przed selectem to dziala, i badz tu madry...

kodowanie dla tabel jest takie same latin2_general_ci

Ok w koncu poszlo smile.gif
modyfikowalem nie ten db.ini (az wstyd sie przyznac), bo okazalo sie ze w podkatalogu modules mam jeszcze jedno db.ini smile.gif
jednakze faktem jest ze zadne charset ani SET charset i tym podobne zabiegi sugerowane przez mysql.com nie pomogly

pafka dzieki wielkie za pomoc i za Twoj poswiecony czas

Ten post edytował kaitux 28.12.2007, 12:11:12
Go to the top of the page
+Quote Post
pafka
post 28.12.2007, 12:42:41
Post #8





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 8.01.2005

Ostrzeżenie: (0%)
-----


hmm a jak tak zmienisz questionmark.gif

$dbc = @mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) OR die (header ("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/access_denied.php"));
@mysql_select_db (DB_NAME, $dbc) OR die (header ("Location: http://" . $_SERVER['HTTP_HOST'] .dirname($_SERVER['PHP_SELF']) . "/access_denied.php"));
mysql_query("SET NAMES LATIN2", $dbc);


przez phpmyadmina we wszystkich tabelach widzisz polskie znaki questionmark.gif czy sa gdzies krzaczki questionmark.gif

Cytat(kaitux @ 28.12.2007, 12:38:39 ) *
Ok w koncu poszlo smile.gif
modyfikowalem nie ten db.ini (az wstyd sie przyznac), bo okazalo sie ze w podkatalogu modules mam jeszcze jedno db.ini smile.gif


smile.gif))
Go to the top of the page
+Quote Post
czerwony2
post 28.12.2007, 14:19:26
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 29.11.2006

Ostrzeżenie: (0%)
-----


witam
mam problem z kodowaniem w mysqlu
polega on na tym ze jak dodaje jakieś dane do bazy za pomocą formularza na str to polskie znaki zapisują sie w postaci krzaczków, ale z kolei jak to robie za pomocą drugiego formularza i zapisuje dane do tej samej bazy ale juz innej tabeli za pomocą tej samej funkcji gerenrujacej połączenia to dane zapisują się normalnie w postaci polskich znaków. Dlaczego tak jest, czego to może być wina? Dodam jeszcze że wszczedzie mam Metoda porównywania napisów: latin2_general_ci.
Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
pafka
post 28.12.2007, 14:40:26
Post #10





Grupa: Zarejestrowani
Postów: 33
Pomógł: 1
Dołączył: 8.01.2005

Ostrzeżenie: (0%)
-----


a jakie kodowania sa ustawione w obu formularzach ?
Go to the top of the page
+Quote Post
czerwony2
post 30.12.2007, 01:09:09
Post #11





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 29.11.2006

Ostrzeżenie: (0%)
-----


Rzeczywiście problem był w kodowaniu formularzy dzięki smile.gif


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:30