Skocz do zawartości
  • Zarejestruj się

Blog IPSBeyond.pl

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

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

Spanner

655 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

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się
×

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.