Sytuacja wygląda tak: są sobie dwie maszyny: A i B. Na obu tych maszynach zainstalowany jest MySQL 4.1 (4.1.16 na A i 4.1.17 na B). Chcę skopiować bazę danych xyz z serwera A na serwer B. Charset dla tej bazy danych (+ dla wszystkich jej tabel) to latin2, a collation to latin2_general_ci. Rodzaj tabel to MyISAM.
Próbowałem przetransferować dane na różne sposoby:
1. Export do pliku sql na serwerze A przy pomocy mysqldump z użyciem opcji --default-character-set=latin2, po czym spakowanie do pliku .tgz, przesłanie przez FTP na maszynę B, rozpakowanie i import przy pomocy mysql. Import do pustej bazy danych, której default charset to latin2 a default collation to latin2_general_ci. Dane importują się bez problemu, ale strona, która te dane pobiera i wyświetla (JPortal) zamiast pliterek wyświetla ?.
2. Transfer przy pomocy narzędzia MySQL Migration Toolkit, uruchomionego na maszynie C. Przez wysłaniem danych na serwer docelowy podałem default charset i default collation. Rodzaj tabel ustawiłem na MyISAM. Dane przeniosły się bez problemu, ale na stronie widać ? zamiast polskich znaków diakrytycznych
3. Wejście na maszynie A do katalogu, w którym trzymane są bazy danych, spakowanie katalogu zawierającego bazę danych xyz, przesłanie jej na maszynę B, rozpakowanie, wgranie katalogu do katalogu, gdzie trzymane są bazy danych MySQL. Efekt? Polskie literki są jak należy. Ale... okazuje się, że do bazy danych zastosowany został domyślny charset (latin1) i domyślny collation (latin1_swedish_ci) serwera. Wywaliłem bazę danych, do my.cnf dopisałem poniższe linijki:
Cytat
default-character-set=latin2
default-collation=latin2_general_ci
default-collation=latin2_general_ci
zrestartowałem MySQLa i jeszcze raz skopiowałem folder z bazą danych. Teraz charset i collation przyznane bazie danych są OK, ale polskie znaki znów zamieniły się w ?.
Co ciekawe, jeżeli podejrzę zawartość dowolnej tabeli (w której znajdują się polskie znaki) w phpMyAdminie, to polskie znaki wyświetlają się jak najbardziej prawidłowo (na obu maszynach).
Kolejna ciekawostka: jeżeli zmodyfikuję stronę (na serwerze B) tak, żeby pobierała dane z serwera MySQL na maszynie A, to zamiast pliterek znów widać ?. Dane pobierane z bazy danych na serwerze A przez witrynę znajdującą się na tymże serwerze (A) wyświetlane są prawidłowo. Dwie witryny, na dwóch różnych maszynach, obie pobierają dane z tego samego serwera MySQL, ale różnie wyświetlają polskie znaki.
Podsumowując... jestem w kropce

Nie mogę tylko zrozumieć, jak to możliwe, że polskie znaki pobierane z bazy danych, której collation to latin1_swedish_ci wyświetlane są prawidłowo, a jak zmienić collation i charset na latin2 to wszystko się sypie

Dobra, załóżmy, że zostawię tę bazę danych na szwedzkim kodowaniu, polskie znaki wyświetlają się prawiłowo, ale teraz pytanie: co się stanie z danymi, które zostaną wprowadzone do bazy danych po jej wgraniu na serwer? Czy te nowe dane będą mieć prawidłowo zachowane polskie znaki?
pozdrawiam,
w kropce będący escaflowne
