Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

[php/mysql] polskie znaki (łzy a Łzy)

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

[php/mysql] polskie znaki (łzy a Łzy)

Post 02.11.2008, 01:04:26

Witam, mam problem z zapytaniem SELECT. Jest sobie w bazie, w tabeli komórka zawierająca tekst 'Łzy' i gdy chcę ją SELECTEM i LIKE potraktować to dziwnie się zachowuje. Gdy wpiszę:
Kod: Zaznacz cały
select * from tabela where pole like '%łzy%'

to nie znajduje mi tego rekordu, natomiast kod:
Kod: Zaznacz cały
select * from tabela where pole like '%Łzy%'

działa.

Czyli różnica tylko polega na tym, że jest mała lub duża litera Ł. Zauważyłem że na te nieszczęsne "ł" nie działa też ucfirst czy strtoupper. Co z tym fantem począć?
Avatar użytkownikaDomin82
Posty: 496
Dołączył(a): 30.01.2005
Lokalizacja: Zamość

Post 02.11.2008, 08:20:24

Kodowanie/prównywanie znaków dla bazy/tabeli/kolumny?

btw: mb_strtoupper - mb_ucfirst co prawda nie istnieje, ale łatwo możesz sobie napisać - PHP to niestety dziwny język, gdzie trzeba takie "bajery" stosować.
Avatar użytkownikaKrzysiek Łabuś
Krzysiek Łabuś

retarded
retarded

Posty: 14361
Dołączył(a): 01.02.2004
Lokalizacja: Muszyna

Post 02.11.2008, 09:24:53

Kodowanie/prównywanie znaków dla bazy/tabeli/kolumny?

Hmm, tak patrzę i nie widzę tego w phpMyAdminie... nie ma kolumny 'metoda porównywania napisów':

http://img204.imageshack.us/img204/5760/20081102091927sg7.png

Ale nawet w phpMyAdminie gdy dodam jakiś rekord z polskim znakiem na początku i użyję opcji 'Szukaj' to też nic nie zwraca. Jeżeli to istotne to dodam, że serwer to darmowy 1000gp od OVH.
Avatar użytkownikaDomin82
Posty: 496
Dołączył(a): 30.01.2005
Lokalizacja: Zamość

Post 02.11.2008, 09:28:20

Ale zapewne gdzieś w edycji struktury tabeli będzie możliwość wyboru/podglądu tego.
Avatar użytkownikaKrzysiek Łabuś
Krzysiek Łabuś

retarded
retarded

Posty: 14361
Dołączył(a): 01.02.2004
Lokalizacja: Muszyna

Post 02.11.2008, 09:36:08

No właśnie nigdzie nie ma. Już zgłupiałem:

http://img223.imageshack.us/img223/1867/20081102093138vn8.png
http://img223.imageshack.us/img223/5453/20081102093122wm5.png

edit: na localhoście z latin2 działa.
Avatar użytkownikaDomin82
Posty: 496
Dołączył(a): 30.01.2005
Lokalizacja: Zamość

Post 02.11.2008, 19:56:31

Kod: Zaznacz cały
select * from tabela where LOWER(pole) like LOWER('%Łzy%')

To chyba pomoże.
dzakus
Posty: 7
Dołączył(a): 24.11.2007

Post 02.11.2008, 20:03:22

@dzakus - próbowałem, nie działa. Ale już znam przyczynę problemu. Mysql w wersji 4. Domyślne kodowanie było na latin1 i nie dało się tego zmienić. Założyłem drugą bazę (już wersja 5) i wszystko działa jak należy.
Avatar użytkownikaDomin82
Posty: 496
Dołączył(a): 30.01.2005
Lokalizacja: Zamość


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 31 gości

Subskrypcja

Mamy 55581 zarejestrowanych użytkowników.
Najnowszy użytkownik: grammyawardsthe


Nasi użytkownicy napisali:

  • 946769 wiadomości
  • w 254739 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)