mała baza danych < 50 MB
W tym wypadku wystarczy nam:
- dostęp do phpMyAdmin
- gżegżółka
- Notepad++
- Zapisujemy bazę danych na dysk twardy poprzez panel phpMyAdmin, pamiętamy aby w opcjach eksportu ustawić prawidłowe kodowanie pliku(latin2 to jest inaczej ISO-88859-2)
- Uruchamiamy gżegżółkę i w opcjach programu wybieramy kodowanie pliku oraz kodowanie docelowe pliku
- Uruchamiamy Notepad++ klikamy Ctrl+H i zamieniamy: CHARSET=latin2 na CHARSET=utf-8 czy inne kodowanie jakie mamy mieć docelowo w bazie danych
- Zapisujemy zmiany i wrcaamy do panelu phpMyAdmin, tworzymy nową bazę danych o kodowaniu takim jak skonwertowany plik z kopią bazy.
- Wchodzimy do nowoutworzonej bazy danych i wybieramy zakładkę: Importuj. Oprócz nazwy pliku podajemy kodowanie pliku, na takie jakie ustaliliśmy podczas konwersji
- Podłączamy bazę danych do pliku konfugracyjnego naszego forum czy portalu, którego dokonaliśmy konwersji. Niektóre z CMSów korzystają z cachowania, które trzeba koniecznie opróżnić po konwersji. W przypadku forum IPB opis znajdziesz na końcu poradnika.
- Jeśli w efekcie widzimy, że część zawartości wyświetla się poprawnie, a część nie może to oznaczać, że mieliśmy różne kodowanie znaków wewnątrz tabeli. Wtedy pozostaje nam wrócić do kopii zapasowej pliku bazy danych wykonanej przez gżegżółkę i ręcznie zamienić wszystkie znaki programem Notepad++. Ręcznie oznacza - ustawienie kodowania pliku w Notepad++ na takie jakie powinno być docelowe i metodą Ctrl+H "kod-znaku-litera" docelowy znak - zamienić wszystkie niepasujace do reszty znaki specjalne.
Jeśli mamy dostęp do shell to wykonujemy kroki jak przy dużej bazie danych w przeciwnym wypadku jak do małej z tą różnicą, że porcjujemy zawartość bazy na więcej niż jeden plik, tak aby nie przekroczyć limitów nałożonych przez hostingodawcę.
Duża baza danych > 250 MB
W tym wypadku potrzebne będą:
- dostęp do phpMyAdmin
- dostęp do shell np. przez Putty
- EditPad Lite
- Logujemy się do serwera np. programem Putty
- Zrzucamy bazę danych na serwer(trzeba zadbać o odpowiednią ilość wolnego miejsca) komendą: mysqldump -uuser -ppassword nazwa_bazy_danych > dump.sql
przy czym -uuser to nie błąd -u[nazwa_uzytkownika] - Zmieniamy kodowanie tabel na docelowe komendą: perl -pi -w -e 's/CHARSET=latin2/CHARSET=utf8/g;' dump.sql
- Konwertujemy znaki w locie poleceniem: iconv -f iso-8859-2 -t UTF-8 dump.sql > dump-utf8.sql
- Wczytujemy plik do uprzednio stworzonej bazy danych o kodowaniu = tym po konwersji, komenda: mysql --default-character-set=utf8 -uuser -ppassword nowa_baza_danych < dump-utf8.sql
- Jeśli wystąpią błędy w trakcie wczytywania jak np. brak inkrementacji to pozostaje nam je naprawić, albo wyczyścić niefrasobliwą tabelę z rekordów poleceniem z TRUNCATE tabela_z_problemami . Polecenie te wywołujemy np. z poziomu phpMyAdmin
- Podłączamy bazę danych do pliku konfugracyjnego naszego forum czy portalu, którego dokonaliśmy konwersji. Niektóre z CMSów korzystają z cachowania, które trzeba koniecznie opróżnić po konwersji. W przypadku forum IPB opis znajdziesz na końcu poradnika.
- W razie problemów z kodowaniem wewnątrz bazy danych czeka nas długa droga do sukcesu. W tym wypadku przyda się EditPad Lite, który radzi sobie z odczytem plików o wielkości nawet kilkunastu gigabajtów. Nie pobiera zbyt wiele pamięci. Ręcznie ustawienie kodowania pliku w EditPad na takie jakie powinno być docelowe i następnie metodą Ctrl+H "kod-znaku-litera" docelowy znak - zamienić wszystkie niepasujace do reszty znaki specjalne.
Konwersja forum IPB z ISO-8859-2 na UTF-8:
- Najszybciej wykonujemy konwersję metodą dla dużych baz danych.
- Po konwersji powinniśmy otrzymać komunikat: FATAL ERROR Your settings could not be read by IP.Board. This is a fatal error and IP.Board cannot function while this issue persists. W tym wypadku ściągamy paczkę forum z IPS-u i wypakujemy zawartość folderu /Tools.
- Wrzucamy na serwer do /admin folder /upgradeFinish
- W przeglądarce wpisujemy adres www naszego forum z końcówką: /admin/upgradeFinish pojawi nam się instalator IPB, który przebuduje zawartość cache forum
- Wchodzimy do panelu ACP i ustawiamy w zakładce System -> Ustawienia -> Server Enviroment kodowanie na takie jakiego dotyczyła konwersja.