MySQL i sortowanie z polskimi znakami

Dzisiaj podczas wysyłania próśb do autorów zaprzyjaźnionych blogów dotyczących zmiany anchora mojego linku natrafiłem (a raczej natrafiliśmy razem z Marcinem Łuniewskim) na problem natury technicznej. Otóż okazało się, że WordPress tak pięknie obecnie wspierający UTF8 i domyślnie korzystający z takiego właśnie kodowania znaków, nie sortuje wcale umieszczonych linków alfabetycznie, choć o takim sposobie nas informuje. Linki zawierające na początku polskie znaki zostają umieszczone na samym końcu, co też oznacza, że “wyrzuca” je poza znany mu alfabet. Skoro wszystko jest kodowane w UTF8 to sprawa wydawała się bardzo dziwna, dopóki nie przyjrzałem się strukturze tabeli oraz samej bazy WP – domyślna metoda porównywania napisów to utf8_general_ci, a niestety okazuje się, że general wcale nie oznacza wszystkie, a poza tym właśnie w collocation zawarte są dane dotyczące alfabetu używanego do sortowania. Zgodnie z przewidywaniami, zmiana metody chociażby na tylko jednym polu od nazwy na utf8_polish_ci problem zupełnie rozwiązała. Dobrze będzie wiedzieć na przyszłość, ponieważ takie sortowania wykonuje się jednak dosyć często, a dane na polskich stronach mogą przecież zawierać nasze znaki narodowe.