Kodowanie Mysql

Prohost Wiki

Spis treści

Wprowadzenie

Masz problem z zaimportowaniem bazy danych bo pojawiają się krzaki zamiast polskich literek? Tutaj postaramy się rozwiązać twój problem.

Konwersja

Jeśli widzisz krzaki w phpmyadminie w polach z tekstem zawierającym polskie literki, usuń tabele i sprawdź czy plik z bazą jest w formacie utf-8. Możesz to zrobić otwierając plik w notatniku windowsa który odczytuje utf-8. Jeśli plik nie jest w formacie utf-8 trzeba go przekonwertować. Można to zrobić np. iconv. Tą komendą konwertujemy plik z latin2 do utf-8:

iconv -f Latin2 -t UTF-8 orginalny.sql > wynikutf-8.sql

Ta komenda zamienia plik orginalny.sql który zakodowany jest w latin2 na wynikutf-8.sql zakodowany w utf-8.

Jeśli export pochodzi z serwera mysql 4.1 lub nowszego który używa kodowania latin1 konwersja nie jest potrzebna.

Import

Mając skonwertowany plik bazy możemy ją zaimportować używając phpmyadmin. Wystarczy ustawić kodowanie pliku na utf-8 i zgodność na none. Jeśli w phpmyadminie przeglądając pola są widoczne polskie znaki to wszystko jest ok.

Skrypty

Jednak zwykle na stronie dalej wyświetlają się krzaki zamiast polskich literek. Dlatego należy wysłać do serwera mysql: SET NAMES 'latin2' zaraz po komendzie połączenia się. Na przykład w skrypcie Joomla należy zedytować plik:

/includes/database.php

około 90 linii należy odkomentować linijkę:

@mysql_query("SET NAMES 'latin2'", $this->_resource);

$this->_resource - to jest zmienna połączenia z bazą - może być inna w różnych skryptach.

Teraz skrypt będzie mógł poprawnie odczytać/zapisać polskie znaki.

Zbyt skomplikowane?

Jeśli nie masz pojęcia jak to wszystko zrobić zgłoś to naszej pomocy technicznej i zrobimy to za ciebie.

Na helpdesku dodaj zgłoszenie zawierające:
- dane bazy (nazwa, użytkownik, hasło),
- lokalizacja pliku sql wrzuconego na ftp,
- lokalizacja skryptu używającego bazy

Starsza baza danych

Jeśli importujesz bazę z serwera mysql 4 lub starszego napisz do pomocy technicznej i zrobimy to za ciebie.