Skocz do zawartości
  • Zarejestruj się

Blog IPSBeyond.pl

  • wpisy
    79
  • komentarzy
    42
  • wyświetleń
    131969

Jak poradzić sobie z kodowaniem znaków przy aktualizacji IP.Board 3 do IPS Community Suite 4?

Spanner

748 wyświetleń

W ostatnim czasie robiłem aktualizację dość dużego forum z wersji IP.Board 3 do wersji IPS Community Suite 4. Oczywiście nie obyło się bez problemów. Podstawowym problemem jak zawsze przy aktualizacji są polskie znaki.

Jeśli forum jest w latin2 to nie ma z tym problemów bo wiadomo, że trzeba je przekonwertować do utf-8. Ale co zrobić jeśli nasze forum w wersji 3 miało kodowanie utf, a aktualizacja stwierdza, że to nie jest utf i trzeba dokonać konwersji? W przypadku małego forum możemy oczywiście próbować wykonać taką konwersję, ale z doświadczenia wiem, że nie rzadko kończy się to tym, że zamiast polskich znaków diakrytycznych mamy krzaczki  w postaci np. znaków zapytania.

Metoda, którą przestawiam poniżej jest dość prosta, choć trochę się naszukałem i nakombinowałem aby to zrobić. Niestety aby wszystko działało prawidłowo musimy mieć dostęp do bazy danych z poziomu SSH.

SELECT CONCAT("ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," CHARACTER SET utf8 COLLATE utf8_general_ci; ", "ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; ") AS alter_sql FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'NAZWA_BAZY_DANYCH' INTO OUTFILE '/tmp/database.txt';

Zapytanie to tworzy listę zapytań typu ALTER TABLE..., które zmieniają kodowanie tabel z utf8_genral_ci na utf8_unicode_ci dla bazy danych podanej w NAZWA_BAZY_DANYCH.

Następnie musimy uruchomić z poziomu SSH plik, który powstanie w wyniku tego zapytania i koniec. Możemy dokonać aktualizacji forum bez żadnej dodatkowej konwersji.

 



2 komentarze


Rekomendowane komentarze

A jak przekonwertować Latin2 do UTF-8? Wystarczy wykonać zapytanie w MySQL i uruchomić? Baza nie jest duża bo waży około 250MB, ale nie wiem jakie polecenie byłoby najlepszym rozwiązaniem.

Udostępnij ten komentarz


Link do komentarza
2 godziny temu, Gangst3r napisał:

A jak przekonwertować Latin2 do UTF-8? Wystarczy wykonać zapytanie w MySQL i uruchomić? Baza nie jest duża bo waży około 250MB, ale nie wiem jakie polecenie byłoby najlepszym rozwiązaniem.

Jeśli chcesz zrobić aktualizację forum, to najlepiej odpalić konwerter powinien sobie z tym poradzić. Ogólnie zmiana z latin na utf nie jest taka prosta bo jest zupełnie inny zapis polskich znaków diakrytycznych, więc trzeba je po prostu przekonwertować. Nie zrobisz tego zapytaniem w bazie.

Udostępnij ten komentarz


Link do komentarza

Dołącz do rozmowy

Możesz pisać i zarejestrować się później. Jeśli masz konto,Zaloguj się teraz, aby publikować na swoim koncie.

Gość
Dodaj komentarz...

×   Wklejony jako tekst z formatowaniem.   Wklej jako zwykły tekst

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.