Cześć.
Nigdzie nie musicie pisać, do żadnych
Adminów. Wina waszych problemów z polskimi znakami leży po stronie
Joomla 1.0.13 ISO lub
UTF, czyli np.
Joomla! 1.0.13 IE w kapeluszu!. Ale nie tak całkiem do końca. Bo to oznaczenie, że jest to wersja
ISO lub
UTF-8 zostało dodane dlatego, że autor pomysłu, mongolski programista
Adrian Mummey założył z góry, że wersję
ISO będziemy instalować na bazie danych z kodowaniem
ISO. A może nawet i nie zakładał, bo w Mongolii wprawdzie obowiązuje standard kodowania znaków
ISO 639-2, ale jest to Cyrylica. Czyli wersja
ISO na bazę z kodowaniem znaków
ISO, a wersja
UTF na bazę z kodowaniem znaków
UTF-8. Poniżej cytat z
Joomla.pl:
Baza danych
Jeśli serwer pozwala na założenie nowej bazy danych, zostanie ona założona przez instalatora. Jeśli dysponujesz tylko jedną bazą danych, sprawdź koniecznie sposób kodowania znaków - musi to być utf-8.
Oczywiście prawdopodobnie tekst ten dotyczy wersji
Joomla! IE 1.0.13-utf, chociaż w w/w artykule nie jest to jasno określone. Ale tak właśnie jest, o czym pisałem wcześniej.
Rozwiązanie problemu ze znakami zapytania znajdziecie w kodzie poniżej. W pliku
database.php w katalogu "
includes", od linii
101 znajduje się taki kod:
Kod 1:Kod: |
$this->_table_prefix = $table_prefix;
@mysql_query("SET NAMES 'latin2'", $this->_resource);
$this->_ticker = 0;
$this->_log = array();
|
Wystarczy go zamienić na poniższy, i korzystać i cieszyć się, jak pisze
Zwiastun z
Joomla.pl.
Kod 2:
Kod: |
$this->_table_prefix = $table_prefix;
//@mysql_query("SET NAMES 'latin2'", $this->_resource);
$this->_ticker = 0;
$this->_log = array();
|
Widać, że w drugim kodzie za komentowana jest linia, w której niejako na siłę wymuszane jest kodowanie
latin2 na bazie danych
SQL. Jeśli ktoś ma bazę
SQL z kodowaniem
latin2, to oczywiście nie stanowi to problemu,. Ale jednak większość baz przechowuje dane w kodowaniu znaków
UTF-8 czyli
Unicode, i nie należy po zmianie kodu zmieniać domyślnych ustawień
Systemu Kodowań oraz
Systemu Porównań znaków. Czyli jeśli mamy:
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8),
System porównań dla połączenia MySQL: utf8_unicode_ci ( Unikod (wiele języków), bez rozróżniania wielkości liter )
oraz
Metodę porównywania napisów w tabelach latin1_swedish_ci ( Szwedzki, bez rozróżniania wielkości liter ) to:
NIC NIE MUSIMY ZMIENIAĆ.
Nawet jeśli będzie to kodowanie znaków w języku chińskim. Ja już chyba o tym pisałem gdzieś, ale mam prawo zapomnieć gdzie, więc przypominam o tym jeszcze raz:
NIE GRZEBCIE NIEPOTRZEBNIE W USTAWIENIACH BAZY DANYCH. ZOSTAWCIE DOMYŚLNE USTAWIENIA.
Zresztą, są takie serwery, które uniemożliwiają ingerencję w te ustawienia. I na całe szczęście`.
Oczywiście, to co już jest popsute, czyli ze znakami zapytania ( mam na myśli treści artykułów, tytuły itp ), należy poprawić. Natomiast wszystkie zmiany nazw na nowe, np. zmiany nazw modułów będą działać prawidłowo. Pozdrawiam.
Jokris.
P.s. Drobna uwaga: Jeśli przełączymy język w zapleczu na angielski, to również nie uzyskamy polskich znaków, bo przełącznik języka ustawia kodowanie zaplecza na
ISO-8859-1, czyli standard zachodni, i wpisywanie znaków z polskimi ogonkami zakończy się, po powrocie do kodowania
ISO-8859-2 krzaczkami w postaci znaków używanych do zakodowania liter do
ISO-8859-2. Można to ominąć, przestawiając kodowanie znaków w przeglądarce na
ISO-8859-2, i nie odświeżać strony. To jest błąd wersji
JRE, który nie występuje w wersji
Joomla 1.0.13 Stable z
Joomlapl.com. No, ale tylko dlatego, że tam nie ma przełącznika języka, i zaplecze jest tylko w wersji oryginalnej, czyli angielskiej. Baj....