Skocz do zawartości
Zaloguj się, aby obserwować  
szaq

Przeniesienie baz danych - polskie znaki

Polecane posty

Witam.

Wiem, że podobne tematy były już wałkowane, ale próbowałem podanych w nich rozwiązań i niestety nic nie udało mi się zrobić.

 

Chcę przenieść dwie bazy danych

b_konta

b_grupy

 

 

Serwer, z którego będę przenosił ma następujące parametry:

Wersja serwera: 5.0.32-Debian_7etch5-log

System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)

System porównań dla połączenia MySQL: utf8_unicode_ci

Gdy spojrzeć na tabele w bazach, to metoda porównywania napisów jest ustawiona na latin2_general_ci.

 

Serwer docelowy to:

Wersja serwera: 5.0.32-Debian_7etch8-log

System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)

System porównań dla połączenia MySQL: utf8_unicode_ci

 

Do przeniesienia baz używam PhpMyAdmina.

Zakładam na docelowym serwerze (dostęp root) bazę z porównywaniem latin2_general_ci.

Na źródłowym wybieram eksport, plik ZIP i pobieram plik.

Na serwerze docelowym wybieram bazę, wybieram import, wybieram zestaw znaków UTF8, potem wskazuje plik i wgrywam kopię.

Po uploadzie w PMA wszystko jest w jak najlepszym porządku, ale na stronie polskie znaczki zamieniają się na znaki zapytania.

Idzie jakoś rozwiązać ten problem?

Z góry dzięki za pomoc :D

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Po uploadzie w PMA wszystko jest w jak najlepszym porządku, ale na stronie polskie znaczki zamieniają się na znaki zapytania.

Idzie jakoś rozwiązać ten problem?

Przypuszczalny problem to brak właściwego kodowania na połączeniu mysql<->php

W skrypcie po połączeniu z bazą wykonaj zapytanie: SET NAMES "utf8"

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Spróbuj przy eksporcie ustawić kompatybilność z MYSQL40
Takich rzeczy akurat nigdy nie rób. MySQL 4 nie miało opcji porównywania znaków tabel i przy takim eksporcie pomijane są te ustawienia kodowania znaków w tabeli, więc taki eksport jest nic nie warty.

 

Tak jak regdos pisze, za mysql_connect() dodaj SET NAMES, chociaż ja obstawiam latin2 (utf8 zrozumiałem, że to kodowanie domyślne bazy): mysql_query('SET NAMES latin2');

 

Problem może leżeć też w innym miejscu. Upewnij się też, że przeglądarka dostaje od serwera stronę z poprawnym kodowaniem znaków (taki <META są ignorowane przez przeglądarki, liczy się kodowanie przesłane w nagłówku HTTP). Domyślnie apache2 na Debianie Etch ustawia w nagłówku kodowanie przesyłanych dokumentów html na UTF8, jeżeli masz stronę w latin2 a serwer forsuje UTF to wpisz w jakimś globalnym pliku php (który jest includowany przez wszystkie skrypty):

header('Content-Type: text/html; charset=iso-8859-2');

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dzięki wielkie.

Dodałem zapytanie

mysql_query('SET NAMES latin2');

oraz na wszelki wypadek

header('Content-Type: text/html; charset=iso-8859-2');

i wszystko działa jak należy.

Jeszcze raz dzięki i pozdrawiam.

Wesołych Świąt!

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Użyj programu EditPlus 3 i przekonwertuj baze do odpowiedniego kodowania.

 

Mi to np. z phpbb Przemo pomogło choć nic innego nie dało rady.

 

Pozdrawiam.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Takich rzeczy akurat nigdy nie rób. MySQL 4 nie miało opcji porównywania znaków tabel i przy takim eksporcie pomijane są te ustawienia kodowania znaków w tabeli, więc taki eksport jest nic nie warty.
I właśnie o to chodzi.

Nie znam szczegółów, ale chyba phpmyadmin automagicznie rzutuje sobie znaki na utf8 i wtedy eksport do tabel utf8 jest bezproblemowy... .

 

Ja zawsze robię eksport objęty transakcją i z kompatybilnością MYSQL4 i wszystko działa dobrze. Już dawno nie miałem problemów z przenosinami baz dzięki temu.

 

Ostatnio z latin1 i latin2 przenosiłem do utf8 i wszystko za 1 razem zatrybiło.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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ę

Zaloguj się, aby obserwować  

×