PDA

Zobacz pełną wersję : kodowanie znaków po migracji 1.0.15 -> 1.5.4



bax
29-07-2008, 00:59
Zgodnie z regulaminem oczywiście poczytałem forum i różne strony w googlu.

Tydzień temu zrobiłem ww. migrację na serwisie anglojęzycznym - nie było prawie żadnego problemu (oprócz struktury ustawień modułów strony - chwila pracy).
Wczoraj spróbowałem z innym serwisem, tym razem w j. polskim (www.instytut.info (http://www.instytut.info)) - niestety. Spędziłem przy tym już ok. 12h. Podążałem za różnymi przewodnikami po instalacjach. Skorzystałem z najnowszego migratora. Pliki joomli 1.5.4 były w wersji anglojęzycznej, ale później doinstalowałem spolszczenie i pozmieniałem ustawienia w zapleczu.
Próbowałem zmieniać ustawienia w bazie danych przez PhpMyAdmin (zobaczyłem, że kopia zapasowa plików była kodowana w latin2, a pliki stworzone po instalacji 1.5.4 w UTF-8; sporo się przy tym męczyłem, zmieniałem całą bazę, tabele, poszczególne pola - na różne sposoby kodowania - bez efektu). Próbowałem znaleść jakieś logicznie pasujące fragmenty w plikach typu includes/database..., templates/ef_live2/index.php, szukałem zbędnych ukośników w szablonie, ale bez efektu.
Linia: <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> jest chyba OK. Próbowałem ją przestawić tuż po <head> - bez zmian. Zmiana szablonu na jakikolwiek inny nie rozwiązywała problemu.

Na serwerze (az.pl) jest PHP i MySql w wersjach > 5.
Ręczne poprawianie tekstu byłoby bardzo pracochłonne - mam ponad 150 artykułów (i jeszcze kilka serwisów w joomli do migracji). Zajęłoby to z tydzień. Kopię zapasową bazy danych mam, plik po eksporcie z migratora też, więc - jak to napisano w którymś poście - może nie wszystko stracone. Być może nie zrozumiałem wszystkich wyjaśnień przy różnych wypowiedziach na forum - choć robię strony od 10 lat, na bazach danych się niezbyt znam.
Jest jakiś sposób, by rozwiązać ten problem? Proszę o pomoc.

zwiastun
29-07-2008, 02:09
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
No sam odpowiedz, masz stronę kodowaną w utf8 i twierdzisz, że to jest w porządku?
Jeśli zrzut bazy danych jest kodowany w latin2 (a zrobiłeś go przy pomocy migratora), to instalator joomla winien rozpoznac kodowanie. Nie rozpoznaje? Przekonwertuj sqla do utf8, zwróć uwagę, żeby nie pojawiały się informacje w kwerendach tabel i pól wskazujące na kodowanie latin2.

bax
29-07-2008, 08:43
Zwiastun,
prześlij mi proszę swój adres e-mail na info (at) instytut.info. Masz przepełnioną skrzynkę z wiadomościami, a chciałbym się z Tobą skontaktować.
Pozdrawiam.

bax
29-07-2008, 12:21
PhpMyAdmin pokazuje:
Wersja serwera: 5.1.26-rc-log
Wersja protokołu: 10
Wersja klienta MySQL: 5.1.22-rc
Używane rozszerzenia PHP: mysql
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
System porównań dla połączenia MySQL:jakikolwiek - zmieniałem na najrozmaitsze. Jak pisałem, zmieniałem też

Oczywiście w template można poprawić linię:
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
albo na jakiekolwiek inne charsety - bez efektu.

"Przekonwertuj sqla do utf8, zwróć uwagę, żeby nie pojawiały się informacje w kwerendach tabel i pól wskazujące na kodowanie latin2."
Tak miałem na samym początku - wszystko było w utf8-general-ci (oprócz kopii zapasowych), tak jak poniżej:

jos_poll_menu 4 MyISAM utf8_general_ci 2,0 KB (https://uran.az.pl/phpmyadmin/tbl_structure.php?db=aa24271_i28joo&token=bbc066934b85a95ecb905b6d88b72899&goto=db_structure.php&table=jos_poll_menu#showusage) -
jos_sections 13 MyISAM utf8_general_ci itd.

podsumowanie tabeli też wskazywało na utf8-general-ci. Dlatego próbowałem konwersji "metody porównywania napisów" na latin2 (czy na cokolwiek innego - na razie bez efektu, próbuję dalej).
Na anglojęzycznej stronie miałem ustawione w bazie danych wszędzie utf8, a pliki kopii bezpieczeństwa latin-2 - czyli tak samo, jak miałem dla strony polskojęzycznej. Pierwsza strona oczywiście działa, a druga - krzaczy...