Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> latin2 -> latin1, przenoszenie bazy; kodowanie
Sputnik
post
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
Go to the top of the page
+Quote Post
Tom:-)
post
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?


--------------------
Go to the top of the page
+Quote Post
tosiek
post
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 smile.gif


--------------------
Go to the top of the page
+Quote Post
tommy4
post
Post #4





Grupa: Zarejestrowani
Postów: 288
Pomógł: 12
Dołączył: 2.12.2005

Ostrzeżenie: (0%)
-----


stestuj na początku połączenia do bazy

  1. SET NAMES kodowanie


gdzie kodowanie, latin1, latin2 lub utf8.
Go to the top of the page
+Quote Post
Tom:-)
post
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


--------------------
Go to the top of the page
+Quote Post
tosiek
post
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 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ć smile.gif Ale zostajecie we własnym kodowaniu 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ę smile.gif

Ten post edytował tosiek 22.09.2008, 06:25:00


--------------------
Go to the top of the page
+Quote Post
Tom:-)
post
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


--------------------
Go to the top of the page
+Quote Post
tosiek
post
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ć smile.gif

Ps tez jest wersja pod Windowsa smile.gif
http://gnuwin32.sourceforge.net/packages/libiconv.htm

Ten post edytował tosiek 22.09.2008, 18:10:51


--------------------
Go to the top of the page
+Quote Post
Tom:-)
post
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


--------------------
Go to the top of the page
+Quote Post
tosiek
post
Post #10





Grupa: Zarejestrowani
Postów: 142
Pomógł: 0
Dołączył: 7.07.2008

Ostrzeżenie: (0%)
-----


To życzę wam powodzenia smile.gif Ale kurde coś musi obsługiwać (konwerter) latin1 ;/


--------------------
Go to the top of the page
+Quote Post
Tom:-)
post
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


--------------------
Go to the top of the page
+Quote Post
tosiek
post
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 tongue.gif

Zobacz taka tablicę :
z latin1 na latin2:
Cytat
//$arrRemove = array('ê', 'ó', '±', '¶', '³', '¿', '¼', 'æ', 'ñ', 'Ê', 'Ó', '¡', '¦', '£', '¬', '¯', 'Æ', 'Ñ');
//$arrInsert = array ('ę', 'ó', '±', '¶', 'ł', 'ż', 'Ľ', 'ć', 'ń','Ę','Ó','ˇ','¦','Ł','¬','Ż','Ć','Ń');


Moze sie przyda bo nie znam się na php smile.gif Ale tablice sam zrobiłem tongue.gif

PS pamiętaj że liczy się wielkość liter i cyfr smile.gif

Ten post edytował tosiek 23.09.2008, 18:25:01


--------------------
Go to the top of the page
+Quote Post
misiek172
post
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
Go to the top of the page
+Quote Post
Tom:-)
post
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


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 00:58