Jeżeli przenosiliście serwisy internetowe pomiędzy różnymi serwerami na pewno napotkaliście problemy związane z nieprawidłowym kodowaniem w bazach danych.
Jedną z metod rozwiązania tego problemu jest wykorzystanie programu iconv:
http://linux.die.net/man/1/iconv
Niestety nie zawsze działa to poprawnie.
Miałem jakiś czas temu sytuację w której klient miał znaki hiszpańskie w tekście (nie wiedziałem nawet jaką kombinację klawiszy należy użyć żeby wstawić n z kreską u góry), a kodowanie trzeba było poprawić.
Pierwszy wybór padł na sed, niestety sed'owi chyba nie odpowiadały znaki hiszpański i postanowił ich po prostu nie konwertować.
Z iconovem nie chciałem nawet próbować, ponieważ nie mam pojęcia z jakiego kodowania na jakie miałbym to zmieniać.
Postanowiłem zrobić więc pełen zrzut bazy danych do pliku (baza MySQL).
Kolejnym krokiem było wykorzystanie opcji zamieniania wybranych fragmentów tekstu z poziomu edytora vim np:
:%s/obecne_krzaki/krzaki_docelowe/g
Po wprowadzeniu tego polecenia wszystkie "obecne_krzaki" zmieniły się w "krzaki_docelowe".
Pozostało już tylko zaimportować bazę danych i odpisać na zgłoszenie ... i mieć nadzieję, że klient nie zadzwoni/odpisze.
Na szczęście nie było kolejnego kontaktu ze strony klienta, więc założyliśmy że wszystko przebiegło pomyślnie.
Gdy kiedyś zawiodą Was wszystkie dostępne metody naprawy kodowania w bazie danych, jako ostatnią deskę ratunku można właśnie stosować polecenie %s/.../.../g w vim'ie.
Brak komentarzy:
Prześlij komentarz