PDA

Zobacz pełną wersję : Przenosznie strony na nowy serwer



k4m
04-11-2009, 14:37
Witam,

Dziś przenosiłem stronę. Są małe komplikacje...
Na serwerze starym i nowym metoda porównywania napisów utf8_general_ci.
Po przeniesieniu na nowy serwer krzaczki zniknęły dopiero po odchaszowaniu set names utf8 w database.php.

Teraz problem z kodowaniem w plikach. Na serwerze wyświetlają się krzaczki zamiast polskich znaków. Kodowanie ustawione jest na stronie na ISO-8859-2. Język Polish.

Jak ręcznie zmieniłem polskie znaki to na stronie się dobrze wyświetlały. Ale powinno być inne wyjście niż zmienianie wszystkich polskich znaków.

Co jest źle? Mam dostęp do serwera także jakieś zmienne mogę ustawić na serwerze.

Proszę o pomoc.

Jola
04-11-2009, 19:09
Witam,
to wygląda tak:
wkładasz margarynę do pudełka po maśle i myślisz, że w ten sposób stanie się masłem. Pomijam ten misz-masz, który już popełniłeś po przeniesieniu.
Zacznijmy od początku to znaczy od podstaw - wersja i kodowanie Joomla, kodowanie bazy, tabel i metoda porównywania napisów dla tabel i kolumn?

k4m
05-11-2009, 08:13
Wersja to Joomla! 1.0.15 :: JAL, kodowanie ISO-8859-2.

Stary serwer:
System porównań dla połączenia MySQL: utf8_general_ci
<dfn title="Unicode (wiele języków), bez rozróżniania wielkości liter">Metoda porównywania napisów: utf8_general_ci - tabelek i kolumn też
</dfn> <table class="adminform"> <tbody><tr><td>Wersja MySQL: </td> <td> 5.0.83-Hekko-log </td> </tr> <tr> <td> Wersja PHP: </td> <td> 5.2.9 </td> </tr> <tr> <td> Serwer WWW: </td> <td> Apache </td></tr></tbody> </table>
<dfn title="Unicode (wiele języków), bez rozróżniania wielkości liter">
Nowy serwer:
</dfn>System porównań dla połączenia MySQL: utf8_general_ci
Metoda porównywania napisów: utf8_general_ci - tabelek i kolumn też.
<table class="adminform"> <tbody><tr><td>Wersja MySQL: </td> <td> 5.0.77 </td> </tr> <tr> <td> Wersja PHP: </td> <td> 5.2.9 </td> </tr> <tr> <td> Serwer WWW: </td> <td> Apache/2.2.11 (Fedora) </td></tr></tbody> </table>

Ale jeśli chodzi o bazę to po usunięciu # z database.php
mysql_query("SET NAMES 'utf8'", $this->_resource); kodowanie z bazy wyświetla się dobrze. Ale teraz problem z kodowaniem w plikach. Wyświetlają się
Czytaj ca�o��. A pliki tylko przeniosłem nic nie edytowałem. Kodowanie plików jest w iso.

Jola
05-11-2009, 18:32
Wszystkie elementy muszą "rozmawiać" ze sobą w jednym języku. Joomla jest kodowana w iso-8859-2, więc bezkolizyjna wymiana danych z bazą wymaga adekwatnego kodowania. Odpowiednikiem dla iso-8859-2 w bazie danych jest latin2_general_ci. Wszystkie ustawienia w bazie zmień na latin2 i przywróć
SET NAMES tak jak było.

k4m
06-11-2009, 07:24
A co z kodowaniem plików? Krzaczki wyświetlają mi się z plików, z tłumaczenia polish joomli i modułów które też są w iso kodowanie ?

zwiastun
06-11-2009, 10:33
Jeszcze raz przeczytaj odpowiedź @joolass i wyciągnij wszystkie wnioski! Skoro iso to iso, a nie mieszanina jakaś!

k4m
06-11-2009, 11:54
Zrobiłem tak jak napisaliście. Wszystkie tabelki i baza jest latin2_general_ci. System porównywania dla połączeń też zmieniłem latin2_general_ci.

Gdy dodałem # w set names utf8; pojawiły się znaki zapytania zamiast polskich znaków, lecz gdy z powrotem usunąłem # kodowanie było dobrze.

Kodowanie z plikach dalej nie działa. Wyświetlają się krzaczki zamiast PL znaków.

zwiastun
06-11-2009, 13:22
W jakich plikach nie działa kodowanie?
Może masz coś spaćkane w szablonie?

k4m
06-11-2009, 13:39
Już kodowanie zaczęło działać. Na serwerze było ustawione domyśle kodowanie utf8.
Ale jeszcze pytanie, dlaczego musi być usunięty znak # żeby działało kodowanie z bazy?

zwiastun
06-11-2009, 13:59
1. Czy adres do strony jest jakąś tajemnicą?



Gdy dodałem # w set names utf8; pojawiły się znaki zapytania zamiast polskich znaków, lecz gdy z powrotem usunąłem # kodowanie było dobrze.
2. Jeśli to powyżej jest prawdą to baza danych jest kodowana w utf-8, a nie latin2

k4m
09-11-2009, 08:49
Zrobiłem tak jak pisałeś. Ale zaczęło dopiero działać po ustawieniu:
mysql_query("SET NAMES 'latin2'", $this->_resource);
Dzięki za pomoc.