Zobacz pełną wersję : Krzaki Joomla
dezaprobator
05-06-2017, 14:33
http://setkowicz.gniezno.pl/
i sklep.setkowicz.gniezno.pl
Mam krzaki po przeniesieniu z innego hostingu (home) na ten. Kodowanie strony jest utf-8, w bazie są Polskie znaki. Kodowanie bazy utf-8 kodowanie tabel też utf-8.
Czy Joomla 1.5 wymusza inne kodowanie przy połączeniu ? Jak tak to gdzie ? Jak temu zaradzić. Gdzie dorzucić SET NAMES UTF-8, da się tak ?
maskodka
05-06-2017, 22:59
Popraw tekst ręcznie artykuły i powinno być ok czasem przy przenosinach sie tak zdarza
przenosiłeś ręcznie czy akeeba backup?
gdzieś po drodze nastąpiła zmiana kodowania znaków, jeśli zmiany są w artykułach to prawdopodobnie edytor zapisywał wg innej tablicy kodów.
dezaprobator
07-06-2017, 14:25
Jak już pisałem w Bazie jest kodowanie utf-8
http://prntscr.com/fgydus
http://prntscr.com/fgydp9
W bazie są Polskie znaki- przykład strona o-nas: http://prntscr.com/fgye7h jednocześnie strona wygląda tak: http://prntscr.com/fgyeoa http://setkowicz.gniezno.pl/
W kodzie Polskich znaków nie ma więc nie jest to wina złego kodowania samego szablonu: http://prntscr.com/fgyf04 http://prntscr.com/fgyfad
Any idea ?
zwiastun
07-06-2017, 14:47
Kodowanie bazy danych to dwie informacje:
1. Zestaw znaków (CHARSET)
2. Porównywanie znaków (DEFAULT COLLATE)
Możliwe, że ten drugi parametr masz ustawiony nie na UTF-8 (polish albo general) tylko jakieś latin...
Jeśli w bazie są polskie znaki, to:
- wyeksportuj bazę
- wczytaj np. do Notepad++
- przejrzyj i poszukaj wpisów CHARSET oraz COLLATE
- metodą znajdź i zamień popraw, tak, żeby wszędzie było UTF8
- wczytaj poprawioną bazę i powinno być OK
W razie co, pisz
dezaprobator
07-06-2017, 15:15
Nic z tego. Plik nie zawiera stwierdzeń latin ani mb4 nawet. Wszystkie Charset na utf-8.
Co do collation to mam tylko takie coś:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
zwiastun
07-06-2017, 16:28
Ostatnia linia każdej tabeli powinna wyglądać mniej więcej jak ta:
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci;
lub ta
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
zwiastun
07-06-2017, 23:27
Baza jest poprawna. Przełącz jeszcze witrynę na domyślny szablon (np. Beez lub Rhuk_milkyway) i sprawdź, czy wyświetla poprawnie.
Na razie nie mam lepszego pomysłu.
dezaprobator
08-06-2017, 10:38
Nic nie pomogło. Generalnie krzaki są nawet w panelu administracyjnym.
http://prntscr.com/fhax6r
http://prntscr.com/fhayjz
Wyeksportuj bazę do csv i użyj zabytkowego już programu Gżegżółka (http://www.gzegzolka.com/?m=down).
zwiastun
16-06-2017, 10:58
To nie jest problem bazy danych. Ćwiczyłem skutecznie przed laty wiele takich przypadków, ale tego się nie udało. Co prawda spędziłem nad problemem bez skutku około 2 godzin, ale to i tak dużo.
Na podstawie wcześniejszej kopii można przypuszczać, że witryna była zhakowana i wyczyszczona (w kopii są trojany), możliwe, że w trakcie czyszczenia coś zostało uszkodzone. Ale nadpisanie plików Joomla problemu nie rozwiązuje.
Ponieważ witryna jest na Joomla 1.5 i tak czy owak wymaga modernizacji, sugerowałbym postawienie jej na nowo na Joomla 3.7. Można to zrobić dwuetapowo.
Etap 1 - przeprowadzić migrację.
Etap 2 - postawić nowego Joomla, poinstalować rozszerzenia, skonfigurować, a następnie podmienić tabele danych galerii, kategorii i artykułów. Jeden dzień pracy i po problemie.
Używasz nie mobilnej wersji szablonu i chyba fleash w headerze ( na tel. oglądałem) który odchodzi. Przepisanie strony, nowy mobilny szablon, j2store + ssl powinno wystarczyć na twoje potrzeby. No i lepszy administrator strony, dostęp do admina masz otwarty joomla nie aktualne to nie powinieneś być zdziwiony włamaniem.
Stosując powyższe zyskasz z czasem w google bez ruszania palcem. Można by myśleć o zachowaniu struktury adresów ale myślę że powyższe zrekompensuje zmianę adresów.
adam.lachut
05-07-2017, 10:01
Problem rozwiązany.
Zawartość i kodowanie bazy danych, kodowanie plików, meta charset itp. były ok.
Przyczyną była wersja bazy danych, jaką zwracało mysqli::$server_info - na większości serwerów z MariaDB zwracana wersja ma postać 5.5.5-10.1.24, na tym konkretnym (bizneshost/H88) postać 10.1.22
Joomla! 1.5 na podstawie trzech pierwszych liczb z odczytanej wersji bazy danych określa, czy serwer mysql obsługuje UTF-8: jeżeli odczytana wersja to 5.x.x. lub 4.1.2+ to obsługuje, jeżeli inna to nie obsługuje, a ponieważ 10.x nie spełnia kryteriów, Joomla! nie włączyła obsługi UTF-8 :)
Porządek znaków w MySQL/Databse Collation: N/A (mySQL < 4.1.2)
Zmodyfikowałem funkcję hasUTF() w ./libraries/joomla/database/database/mysql(i).php i wszystko wróciło do normy.
Oprócz tego całe konto (włączając tą domenę) było zainfekowane.
A.
Mam podobny problem,
jak mogę sprawdzić ten "mysqli::$server_info"
i co mam wpisać tu: (mySQL < 4.1.2) ?
adam.lachut
18-07-2017, 16:17
jak mogę sprawdzić ten "mysqli::$server_info"
W pierwszej kolejności sprawdź w panelu administracyjnym co masz w Pomoc/Informacje o systemie przy 'Wersja bazy danych' i 'Porządek znaków w MySQL'
PHP Version 5.6.30
Client API version
5.5.47-MariaDB
Jeżeli metoda porównywania napisów i porządek znaków to to samo, to mam utf8_polish_ci
MysqlI Support
enabled
Client API library version
mysqlnd 5.0.11-dev - 20120503
Info o serwerze,
https://ibb.co/jD7rX5
może o to chodziło?
Wersja serwera: 10.1.23-MariaDB - mariadb.org binary distribution
strona:
http://www.goethe.szczecin.pl/
Ale może szerzej opiszę:
Kodowanie na stronie prawidłowe i niezmieniane.
W bazie danych niby wszystko OK, kodowanie utf-8, jednak cms nie rozpoznaje treści z polskimi znaczkami.
Wygląda jakby był problem przy pobieraniu-kodowaniu pomiedzy cmsem a bazą danych.
W szablonie polskie znaki wyswietlają sie prawidłowo.
Tak samo prawidłowo pojawia się menu admina (artykuł) i polskie w nim znaczki.
W drugą stronę, tworząc nową treść po polsku, wyświtla się prawidłowo, jednak w bazie danych zapisuje się w krzaczkach.
obrazkowo może będzie łatwiej.:
https://ibb.co/miSmzk
https://ibb.co/njPAQQ
https://ibb.co/duKc5Q
https://ibb.co/nJMDek
https://ibb.co/g9qvs5
https://ibb.co/k9o4kQ
Programistą nie jestem i może źle to zrobiłem, ale tak zmieniłem. I chyba pomogło.
function hasUTF() {
$verParts = explode( '.', $this->getVersion() );
return ($verParts[0] == 10 || ($verParts[0] == 1 && $verParts[1] == 1 && (int)$verParts[2] >= 2));
}
adam.lachut
20-07-2017, 09:20
Żeby problem się nie powtórzył przy zmianie wersji bazy danych możesz pominąć sprawdzanie numeru wersji:
function hasUTF() { return (1);
}
Programistą nie jestem i może źle to zrobiłem, ale tak zmieniłem. I chyba pomogło.
function hasUTF() {
$verParts = explode( '.', $this->getVersion() );
return ($verParts[0] == 10 || ($verParts[0] == 1 && $verParts[1] == 1 && (int)$verParts[2] >= 2));
}
Witam.
Czy możecie mi podpowiedzieć gdzie ja mam powyższe wpisać żeby pojawiły się polskie znaki - z góry dziękuję.
adam.lachut
09-02-2018, 20:04
/libraries/joomla/database/database/mysql.php
/libraries/joomla/database/database/mysqli.php
A.
Witam. Poprawiłem kod zgodnie z wytycznymi, nie wiem czy dobrze dostosowałem do swojej bazy
10.1.30-MariaDB. Wpis wygląda tak.
$verParts = explode( '.', $this->getVersion() );
return ($verParts[0] == 10 || ($verParts[0] == 1 && $verParts[1] == 3 && (int)$verParts[2] >= 0));
Ale niestety dalej nie działa tak jak powinno :(. Może dlatego że to forum. http://www.seimeikan.pl/forum2/forum/
10.1.30-MariaDB
Dziękuję @adam.lachut za rozwiązanie. Po wielu godzinach szukania w końcu dzięki Tobie udało mi się rozwiązać problem.
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!