Mam do skonwertowania średniej wielkości forum (~70k postów/~4k tematów, ~1k użytkowników). Postawione jest to na phpbb by przemo v1.12.6.
Dostałem bazę od niego. Plik .sql kodowany w utf8, w notatniku niby krzaki, ale po wrzuceniu do phpMyAdmina jest już dobrze. Tabele i baza, po wrzuceniu, collation ma ustawione na utf8_general_ci - nie zmieniałem.
Nie chcąc usuwać modyfikacji przemo - część danych z nich będę jeszcze potrzebować - dodałem (zgodnie z zaleceniem tutorialu znalezionego na phpbb3.pl) kolumnę user_dateformat w tabeli users
Kod: Zaznacz cały
ALTER TABLE phpbb_users ADD user_dateformat VARCHAR(60) DEFAULT '|j M Y|, \\\o H:i' NOT NULL;
Pierwsza myśl - export/import bazy danych spaprały coś. Wygrzebałem gdzieś stare pliki od przemo 1.12.6. Edytując config.php i tabelę config, spiąłem wrzuconą bazę z plikami (brak załączników nieistotny). Znaki wyświetlają się prawidłowo, nowe/edytowane posty nie różnią się zestawem znaków od tych już istniejących, importowanych. Więc baza się nie uszkodziła.
Spróbowałem wywalić modyfikacje przema (funkcja 'odinstaluj' w PA), ustawiając docelową wersję na 2.0.19 (najwyższa oferowana opcja). Ponowna konwersja phpbb2->phpbb3, teoretycznie zakończona powodzeniem, także dała krzaki zamiast polskich znaków diakrytycznych...
Zaglądając do FAQ konwersji na phpbb.com, przeczytałem:
Nie wiem czy dobrze rozumiem, że chodzi o "stare" phpbb, więc phpbb2 (zresztą tylko tam jest plik lang_main). Zaglądając do lang_main.php z lang_polish, znalazłem fragment kodu:Broken non-latin characters The conversion script assumes that the database encoding in the source phpBB2 matches the encoding defined in the lang_main.php file of the default language pack of the source installation. Edit that file to match the database's encoding and re-start the conversion procedure.
Kod: Zaznacz cały
setlocale(LC_ALL, 'pl');
@setlocale (LC_ALL, 'pl_PL.iso-8859-2', 'pl_PL.latin2', 'pl_PL', 'pl', 'polish');
$lang['ENCODING'] = 'iso-8859-2';
$lang['DIRECTION'] = 'ltr';
Czy ktoś spotkał się z podobnym problemem/znalazł jego rozwiązanie? Do tej pory jedyne co zadziałało to "ręczne" kopiowanie danych zapytaniami sql w phpMyAdminie - testowałem póki co tylko dla posts_text. Jednak jest to metoda toporna, wolałbym jej uniknąć.