![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
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 |
|
|
![]()
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 ![]() 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 |
|
|
![]()
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" ![]() 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 ![]() 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 ... |
|
|
![]()
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 ![]() |
|
|
![]()
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 ![]() require_once('db.ini.php'); <- tutaj masz zawarte tez "set names" ![]() |
|
|
![]()
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 ![]() modyfikowalem nie ten db.ini (az wstyd sie przyznac), bo okazalo sie ze w podkatalogu modules mam jeszcze jedno db.ini ![]() 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 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 1 Dołączył: 8.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
hmm a jak tak zmienisz
![]() $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 ![]() ![]() Ok w koncu poszlo ![]() modyfikowalem nie ten db.ini (az wstyd sie przyznac), bo okazalo sie ze w podkatalogu modules mam jeszcze jedno db.ini ![]() ![]() |
|
|
![]()
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 -------------------- |
|
|
![]()
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 ?
|
|
|
![]()
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
![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:30 |