ostatnio zainteresowałem się funkcjami i procedurami MySQL. Stwierdziłem, że ułatwiają życie i przy okazji pomagają przy optymalizacji. Postanowiłem więc przenieść część funkcji PHP bezpośrednio do MySQL, by nie musieć w trakcie parsowania danych pobranych z bazy wywoływać kolejno tych samych funkcji. Gdzie leży problem? Otóż niektóre z nich (owych funkcji) zwracają ciągi tekstowe zawierające polskie znaki. Niestety ciągi zwracane przez funkcje MySQL zamiast owych znaków zawierają jedynie krzaczki. Przykładowa funkcja:
CREATE FUNCTION testMeNow (p char(1)) RETURNS char(20) RETURN 'ąęćłóżź';
Rezultat dla jej wykonania:
Kod
ąęćłóżź
Więcej tłumaczyć nie trzeba. Oczywiście próbowałem znaleźć rozwiązanie, Google'owałem, szukałem, próbowałem używać funkcji MySQL CAST oraz CONVERT, jednak bez pozytywnych rezultatów, krzaczki po prostu przybierały inny format, ale nadal pozostawały krzaczkami. Co więcej próbowałem również zmieniać kodowanie pliku z funkcją (ładuję ją z poziomu konsoli poprzez "SOURCE"), niestety bez skutku. Próbowałem nawet pobierać wynik tej funkcji we wszystkich (36) dostępnych w MySQL kodowaniach (do konwersji używałem funkcji CONVERT), również bez rezultatu.
Jeśli ktoś zna rozwiązanie albo chociaż potrafi mnie na nie naprowadzić, bardzo proszę o pomoc. Stworzyłem również temat na forum dev.mysql.com, więc proszę mnie tam nie odsyłać.
