![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 30.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Przenoszę bazę na inny serwer i mam problem z kodowaniem. Przeczytałem już kilka tekstów w sieci z tym związanych, jednak wszystkie metody jakich użyłem okazały się niewystarczające. Albo ja to źle robiłem ... Przedstawię ogólną konfigurację: Baza przenoszona z Serwer1 na Serwer2. Serwer1 Ustawienia na stronie głównej phpmyadmin(2.6.4-pl2) : Cytat System kodowania znaków dla MySQL: UTF-8 Unicode (utf8) System porównań dla połączenia MySQL: utf8_general_ci Zabytanie do bazy: Kod SHOW VARIABLES LIKE "character_set%"; zwraca: Cytat character_set_client utf8 character_set_connection utf8 character_set_database latin2 character_set_results utf8 character_set_server latin2 character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/ Serwer2 Ustawienia na stronie głównej phpmyadmin(2.6.1): Cytat System kodowania znaków dla MySQL: UTF-8 Unicode (utf8) System porównań dla połączenia MySQL: utf8_polish_ci Zabytanie do bazy: Kod SHOW VARIABLES LIKE "character_set%"; zwraca: Cytat character_set_client utf8 character_set_connection utf8 character_set_database latin1 character_set_results utf8 character_set_server latin1 character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/ W obec takch ustawień, jakie kroki powiniennem poczynić, aby kodowanie na Serwer2 było prawidłowe? Przy wgrywaniu bazy z poziomu phpmyadmin, jaki zestaw znaków dla pliku wybrać? Z góry dziękuję za pomoc. (IMG:http://img83.imageshack.us/img83/6798/phelp8as.gif) Ten post edytował Sputnik 31.01.2006, 16:00:47 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Hmm dla mnie np. wygodniej ustawić sobie bazę ( host ) pod własne wymagania niż przerabiać - konwertować całą bazę. Bo może się to skończyć utratą znaków polskich, z reguły konwersji używa się do naprawy baz gdzie występuje wiele kodowań ( ale z reguły ręcznie) czyli do ratowania bazy. Do konwersji możesz spróbować użyć gżegżółki
http://www.gzegzolka.com/ Ale i tak wolę dodać w pliku łączącym się z bazą jedną linijkę niż przerabiać 70 baz danych. Wywołujesz SET NAMES przez mysql_query i baza jest ustawiona pod twoje wymagania (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Jakby co w dokumentacji masz dużo o ustawieniach: http://dev.mysql.com/doc/refman/5.0/en/cha...connection.html Ale i tak polecam "przestawić" nową baze na latin2: wstaw pod: Cytat $dbselect = mysql_select_db($this->dbname); to: Cytat mysql_query('SET NAMES latin2 COLLATE latin2_general_ci', $this->db_connect_id); Oczywiście $dbselect będzie się różnić (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ale zostajecie we własnym kodowaniu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) A żeby przestawić baze na latin2 możecie wejść w operacje >> system porównania na latin2_general_ci lub wykonać zapytanie: Cytat ALTER DATABASE `nazwa_bazy` DEFAULT CHARACTER SET latin2 COLLATE latin2_general_ci; za `nazwa_bazy` wstawcie nazwę bazy (przydałoby się narzędzie które by zmieniało dla istniejących tabel ) I macie przestawioną bazę na latin2 i każda tabela jaka wgracie będzie miała kodowanie latin2 i tylko będzie brakować mysql_query Przy aktualizacji skryptu z reguły plików łączących z bazą się nie zmienia więc zawsze gdzie przeniesiesz ten plik takie kodowanie przyjmie baza podczas połączenia. No i trzeba tez przestawić bazę co zajmie 30sec roboty PS wykonjcie sobie zapytanie: Cytat SET NAMES latin2 COLLATE latin2_general_ci; SHOW VARIABLES LIKE 'character_set%'; I Cytat SET NAMES latin2 COLLATE latin2_general_ci; SHOW VARIABLES LIKE 'collation%'; To zobaczycie jak ładnie ustawia waszą bazę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował tosiek 22.09.2008, 06:25:00 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 08:21 |