[PHP] Sortowanie polskich znaków w mysql
Piątek 09.05.2008, 13:49:06
Ot i znalazł się problem. Niby nic takiego, ale 2 godziny z życiorysu wyjęte. Otóż pracując nad stroną konkursu WirtualnaMiss.pl trafiłem na dość ponoć popularny, ale za to niezbyt dobrze opisany na forach objaw: podczas sortowania danych pobranych z bazy MySQL w porzadku alfabetycznym, teksty zaczynające się polskimi znakami diakrytycznymi (tzw. ogonkami) zależnie od kolejności sortowania pojawiają się na końcu lub na początku listy, zamiast tam gdzie powinny. Przykładowe zapytanie: mysql_query("SELECT * FROM names ORDER BY name ASC"); powinno zwrócić posortowaną alfabetycznie listę nazwisk. Tak jednak nie jest. Tymczasem rozwiązanie jest banalnie proste. Zakładając, że baza jest w UTF8, wystarczy zmodyfikować powyższe zapytanie w następujący sposób: mysql_query("SELECT * FROM names COLLATE utf8_polish_ci ORDER BY name ASC"); To wszystko! Oczywiście zależnie od użytego w bazie danych kodowania utf8_polish_ci trzeba zastąpić odpowiednią definicją.
Komentarze(0)
Dodaj komentarz:
|