![]() |
![]() ![]() |
![]() |
![]()
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. ![]() Ten post edytował Sputnik 31.01.2006, 16:00:47 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 284 Pomógł: 0 Dołączył: 25.03.2007 Skąd: Globalna wioska Ostrzeżenie: (0%) ![]() ![]() |
Mam ten sam problem. Potrzebuję przejść z bazy MySQL z latin2 na latin1. Czy ktoś zna sposób?
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie lepiej żebyście zostali w latin2 i wymusili na każdej bazie na którą się przeniesiecie latin2 ? poprzez mysql_query w plikach łączących się z bazą jeśli skrypt nie ma opcji zmieniania kodowania
![]() -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 288 Pomógł: 12 Dołączył: 2.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 284 Pomógł: 0 Dołączył: 25.03.2007 Skąd: Globalna wioska Ostrzeżenie: (0%) ![]() ![]() |
tosiekWszystko ok ale jak się kursuje między hostami albo robi się często aktualizacje przy kilkudziesięciu skryptach to lepiej skonwertować bazę pod danych host. Aktualizując pliki php tylko je nadpisujesz a nie nie grzebiesz w kodzie co wydłuża czas. Polska powinna mieć ustalony standard dla naszych znaków. Jak mam portal po ang to może być baza wszystko jedno jaka. Tam nie jest ważne kodowanie chyba że są szczególne znaki. Powinno to być ujednolicone albo powinien ktoś sporządzić tools. Z tego co się zorientowałem nie ma takiego do dużych baz danych MySQL dlatego nasza firma jest już zajęła się tym tematem i tworzymy przydatne darmowe narzędzie
-------------------- |
|
|
![]()
Post
#6
|
|
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 ![]() 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ć ![]() ![]() 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ę ![]() Ten post edytował tosiek 22.09.2008, 06:25:00 -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 284 Pomógł: 0 Dołączył: 25.03.2007 Skąd: Globalna wioska Ostrzeżenie: (0%) ![]() ![]() |
tosiek gżegżółki nie ma latin1
-------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
A iconv ?
http://www.gnu.org/software/libiconv/ Poczytaj na google więcej, sam dokładnie nie umiem się tym posługiwać ![]() Ps tez jest wersja pod Windowsa ![]() http://gnuwin32.sourceforge.net/packages/libiconv.htm Ten post edytował tosiek 22.09.2008, 18:10:51 -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 284 Pomógł: 0 Dołączył: 25.03.2007 Skąd: Globalna wioska Ostrzeżenie: (0%) ![]() ![]() |
tosiek iconv - nie przerobi dużych baz dlatego tworzymy własny tools
-------------------- |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
To życzę wam powodzenia
![]() -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 284 Pomógł: 0 Dołączył: 25.03.2007 Skąd: Globalna wioska Ostrzeżenie: (0%) ![]() ![]() |
Właśnie są problemy. Sami jeszcze nie wiemy jakie ma być wspólne kodowanie ale na razie zostanie utf-8
-------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Kurcze zostańcie na latin2 lub utf8... dajcie sobie spokój z latin1 bo tam nie ma polskich znaków
![]() Zobacz taka tablicę : z latin1 na latin2: Cytat //$arrRemove = array('ê', 'ó', '±', '¶', '³', '¿', '¼', 'æ', 'ñ', 'Ê', 'Ó', '¡', '¦', '£', '¬', '¯', 'Æ', 'Ñ'); //$arrInsert = array ('ę', 'ó', '±', '¶', 'ł', 'ż', 'Ľ', 'ć', 'ń','Ę','Ó','ˇ','¦','Ł','¬','Ż','Ć','Ń'); Moze sie przyda bo nie znam się na php ![]() ![]() PS pamiętaj że liczy się wielkość liter i cyfr ![]() Ten post edytował tosiek 23.09.2008, 18:25:01 -------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 656 Pomógł: 3 Dołączył: 26.10.2005 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
ja nie rozumiem główkowania, według mnie najlepszy jest UTF-8 Nie trzeba męczyć się w żadne znaczki jak przy latin2. Nigdy się nic nie krzaczy, pod każdą przeglądarką wyświetlane jest dobrze. Więc po co kombinować?
-------------------- zmoderowano - waga i rozmiar
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 284 Pomógł: 0 Dołączył: 25.03.2007 Skąd: Globalna wioska Ostrzeżenie: (0%) ![]() ![]() |
I dlatego nasz tools w pierwszej wersji będzie przekonwertowywał do UTF-8
-------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 00:58 |