![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 9.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Potrzebuję pomocy z kodowaniem znaków w mysql-u. Nie zajmuję się zawodowo PHP, więc całkiem możliwe, że robię coś nie tak już u podstaw. Próbowałem już wielu możliwości, ale żadna nie pomaga. (IMG:style_emoticons/default/sciana.gif)
Standardowo mój kod wygląda mniej więcej tak:
Pewnie zbyt dużo tam tych SET, ale zacząłem już dokładać wszystko co mogło by coś zmienić... (IMG:style_emoticons/default/wstydnis.gif) Potem uznałem, że może biblioteka PDO coś nie tegest jest, więc zrobiłem to tak:
Na bazie wykonywałem:
oraz sprawdzałem kodowanie przez:
phpMyAdmin pokazuje to samo. Na stronie w nagłóku mam:
Baza, Apache i PHP postawione są na Debianie. Jak zrobię zapytanie z palca do bazy, to polskie znaki są widoczne w tabeli. Nie mam już kompletnie pomysłu co może być nie tak... Proszę o pomoc. Z góry dziękuję! |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Problem jest stary jak świat a rozwiązanie standardowe: należy sprawdzić, w jakim kodowaniu "krzaki" lecą do bazy, w jakim kodowaniu są w bazie oraz w jakim są pobierane z bazy i wyświetlane na stronie. Służy to tego:
http://pl2.php.net/manual/en/function.mb-detect-encoding.php |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 9.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ta funkcja zwraca: ASCII, czyli coś nie tak jest jeszcze przed wysłaniem do bazy... Teraz kwestia przerobienia tego na UTF-8. Postaram się nad tym popracować i dam znać, czy mi się udało. Dzięki!
EDIT: Chyba jednak jakieś bzdury piszę...
Jak powinienm to przekonwertować? "w jakim kodowaniu są w bazie oraz w jakim są pobierane z bazy i wyświetlane na stronie" W bazie są już krzaki, więc chyba nie ma sensu przechodzić do sprawdzania jak są wyświetlane. Po kilku próbach zrobiłem jeszcze tak:
I wynik mam taki: Kodowanie z POST: UTF-8 Kodowanie zapytania: ASCII To chyba wszystko wyjaśnia. Dane przychodzą poprawne, ale już tworzone zapytanie nie jest poprawne. Dobrze to rozumiem? Jeśli tak, to w jaki sposób zmusić zmienną $zapytanko do poprawnego kodowania? Funkcja utf8_encode jakoś nie ma ochoty zadziałać, jak widać. EDIT Przepraszam, że tak wam marudzę, ale próbowałem jeszcze wielu porad, które znalazłem i nadal to nie działa. (IMG:style_emoticons/default/sadsmiley02.gif) Żeby wszystko było jasne, to przedstawię na jakim jestem aktualnie etapie: Na bazie próbowałem ustawiać różnego kodowania, aktualnie zostało: utf8_unicode_ci Dla pewności zastosowałem już wszystko co się dało do kodowania ba bazie:
Strona powinna być kodowana poprawnie: Po pobraniu danych sprawdzam jak są kodowane:
i potem wysłanie do bazy: Po wykonaniu powyższego wyświetla mi się zapytanko: INSERT INTO `markety` (`nazwa`, `numer`, `ip`, `lokalizacja`, `adres`, `vlan`, `telefon`, `numertp`) VALUES('aąeęążźś','9960','10.51.99.0','','',0,'','')zapytanko: INSERT INTO `markety` (`nazwa`, `numer`, `ip`, `lokalizacja`, `adres`, `vlan`, `telefon`, `numertp`) VALUES('aąeęążźś','9960','10.51.99.0','','',0,'','') Kodowanie zapytania: UTF-8 nazw: aaąeęążźś Po: UTF-8 nazwa z POSTaąeęążźś Kodowanie z POST: UTF-8 Zgodnie z tym, co pisałeś Pilsener, przetestowałem kodowanie w każdym miejscu po drodza i jak widać, wszystko jest OK - UTF-8, polskie znaki. Niestety w bazie są tylko krzaki.... nazwa => a?e?(IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) Bardzo proszę o pomoc, bo nie potrafię sobie z tym poradzić (IMG:style_emoticons/default/sadsmiley02.gif) EDIT Ruszyło się do przodu!! (IMG:style_emoticons/default/smile.gif) Po wielu walkach (z serwerem na Debianie włącznie). Zaczęło częściowo działać! Ostatecznie wygląda to tak, że dane, które wpadają do bazy są wcześniej kodowane przez utf8_encode a po wyjęciu z bazy dekodowane przez utf8_decode. Działa to dla części znaków, jak óźż, ale krzaki robią się dla ąę. Ktoś wie co może być nie tak? DOBRA! Widzę, że na tym forum nie ma co liczyć na pomoc... Dzięki! Ten post edytował rysic 30.09.2010, 14:06:24 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat utf8_encode — Koduje ciąg znaków w ISO-8859-1 do UTF-8 - nie wydaje mi się, żeby ISO-8859-1 było odpowiednie dla polskich znaków, używa się ISO środkowoeuropejskiego, utf8 albo windows.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 9.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
A po co chcesz konwertować skoro wszędzie masz utf-8? Po to ustawiamy takie same kodowanie w bazie, na stronie i przy połączeniu by nie konwertować niczego (IMG:style_emoticons/default/winksmiley.jpg)
Jeśli na stronie masz inne kodowanie a do bazy chcesz wysłać inne, to można zrobić też tak: algorytmy.pl/doc/xhtml/index.php?id=2002 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 9.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Twoja podpowiedź
+ konwertowanie tego co otrzymuję ze strony do bazy
a potem konwertowanie z bazy na wyświetlenie
oraz ustawienie na stronie kodowania oraz ustawienie kodowania w bazie na UTF8 wreszcie pomogło!!! To jest dla mnie trochę dziwne, bo z tego co tu widać, dostaję dane w Windows-1254 (mimo, że ustawiałem kodowanie na stronie na UTF8/USO-8859-2/... oraz mam ustawione akceptowane dane z formularza na ISO-8859-2) a jak chcę je tak wyświetlić, to mu nie pasuje... Nie chcę już tego drążyć więcej... ważne, że działa już. Dzięki! Ten post edytował rysic 4.10.2010, 13:33:15 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 12:50 |