Po przeniesieniu WordPressa na inny serwer lub wgraniu kopii bezpieczeństwa na obecny spotkać nas może niemiła niespodzianka spowodowana błędnym kodowaniem bazy danych – zamiast polskich liter ze znakami diakrytycznymi widnieć będą dziwne krzaczki (np. ź, ż, Ä™, “, Ä… itp.).
Poniżej dwa sposoby rozwiązania tego problemu.
Ręczna robótka metodą „znajdź i zamień”
W teorii przedstawia się ona następująco:
- wykonaj zrzut bazy danych,
- otwórz otrzymany plik .sql edytorem tekstowym (np. PSPadem) z kodowaniem UTF-8,
- przejrzyj pobieżnie plik a gdy natrafisz na krzak wywnioskuj z kontekstu jaką literę zastępuje i następnie skorzystać z funkcji „zamień…”,
- powtórzy czynność z poprzedniego punktu dla wszystkich napotkanych krzaków.
Metoda ta, mimo iż całkiem skuteczna, jest straszliwie czasochłonna. Robiłem to wczoraj w nocy (przy okazji przenoszenia strony „Orientuj się” na nowy serwer) przez 2 godziny i polecam tylko w ostateczności :-).
Automatyczna konwersja dzięki wtyczce
Wtyczka bbWP2UTF8 w parę sekund wykona całą czarną robotę. Wystarczy aktywować ją na WordPressie z krzaczkami i podążać za wskazówkami:
- Step 1: Convert columns to binary counterparts for checked tables
- Step 2: Convert tables to UTF8 character set
- Step 3: Convert database default character set to UTF8
- Step 4: Convert columns back from binary to original types
Jedyną rzeczą z jaką wtyczka sobie nie radzi to nazwy kategorii – te trzeba już ręcznie zmienić:
Komentarze
do konwersji znaków można użyć też Gżegżółki http://www.gzegzolka.com/
odpowiedzrobi to automatycznie w całym pliku *.sql
żebym to miał dwa lata wstecz…. eh
odpowiedzNeigdyś ręcznie wszystko poprawiałam. Tragedia. Następnym razem już z drobną pomocą szybciej rozwiązałam problem. A raczej go pominęłam -ustawiając odczytywanie bazy nie jako utf tylko jak latin1 lub latin2 :P
odpowiedzAle widzę, że jest i wtyczka do tego. Kurcze, zdecydowanie ją zbookmarkuję.
Tylko czy wtyczka działa dla wp 2.6?
odpowiedzSprawdzałem na 2.6.3 i działa wyśmienicie. :-)
odpowiedzNajlepiej to eksportować / importować bazę po ssh :) No ale nie na każdym hostingu mamy dostęp :(
odpowiedzno właśnie jak najlepiej robi się export bazy? Ja zawsze najpier optymalizuje, naprawiam, zaznaczam pełne dodanie i wszystko, fakt ze jeszcze na wp nie musiałem się tym zajmować, no ale warto wiedzieć
odpowiedzPoleceniem iconv też zawsze można. Jeszcze to prostsze niż instalowanie wtyczek czy ręczna zamiana.
odpowiedzJest jeszcze jeden sposób, IMO najprostszy: wyedytowanie pliku wp-db.php, znajdującego się w folderze wp-includes. Wszystko sprowadza się do dodania takiego wiersza: mysql_query(„SET NAMES 'utf8′”); w odpowiednie miejsce ww. pliku.
Sposób przetestowałem dwukrotnie gdy po przenosinach WordPressa miałem krzaki zamiast polskich znaków, zawsze działało. Więcej informacji tutaj (stąd mam ten sposób): http://www.miasik.net/archive/2006/10/wordpress-i-zmiana-hosta/
Tyle tylko, że w moim pliku jest to w okolicy wiersza 319, nie 43, jak opisano pod powyższym linkiem. Ale to pewnie dlatego, że od 2006 roku, gdy post był napisany, sporo się w WordPressie zmieniło.
Jest jednak jeden problem: trzeba o tym pamiętać przy aktualizacji WordPressa, bo wtedy ten plik zostaje nadpisany i trzeba operację powtórzyć.
odpowiedzJest jeszcze inna opcja. Za pomocą zewnętrznego skryptu do obsługi bazy, np. http://www.mysqldumper.de/en/ :)
odpowiedzCiekawy zbieg okoliczności. Właśnie od kilku dni męczę się z kodowaniem bazy po przenosinach i tak z ciekawości zajrzałem na wpninja. A tu niespodzianka, najnowszy post i mój problem rozwiązany, dzięki wielkie
odpowiedzŚwietny feedback! Dzięki! :-)
Jak widać jest całkiem sporo sposobów na rozwiązanie problemu z krzaczkami pojawiającymi się zamiast polskich liter.
odpowiedzjest jeszcze jeden problem z kodowaniem który występuje przy przenosinach bloga…
odpowiedzco zrobić jeśli po imporcie bazy na nowy serwer wszystkie ogonki zamieniły się na „?”
w takim przypadku funkcja „znajdź i zamień” raczej nie pomaga bo wszędzie jest taki sam znak zapytania……
Nie jestem specjalistą ale czytałem, że taka baza jest już praktycznie do niczego.
odpowiedzdzieki bardzo za porady – uratowales mi zycie! ( a przynajmniej jego 3 godziny bo mialem dokladnie ten sam problem przy przenoszeniu mej bazy
dzieki jeszcze raz
odpowiedzpozdro
krzysiek
ps pisze bez pl liter zebys nie mial problemow z mym komentarzem :)
dzieki za linki, w szczególności z komentarzy – przydały sie :)
odpowiedzDodaj własny komentarz