PDA

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?

terra
06-06-2017, 15:15
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

Karol99
15-06-2017, 19:04
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.

GOGOKOM
18-06-2017, 06:01
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.

fukami
18-07-2017, 15:57
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'

fukami
19-07-2017, 11:48
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

fukami
19-07-2017, 12:30
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

fukami
19-07-2017, 13:47
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);
}

sebsok
09-02-2018, 19:22
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.

sebsok
10-02-2018, 08:11
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

pozpoz
12-02-2018, 14:19
Dziękuję @adam.lachut za rozwiązanie. Po wielu godzinach szukania w końcu dzięki Tobie udało mi się rozwiązać problem.