PDA

Zobacz pełną wersję : Zły zapis z komponentu do bazy



robdk
10-02-2009, 00:07
Witam
Mam kurcze nietypowy problem z Joomla 1.0.15 JIE UTF...
Strona jak i artykuły wyświetlają się poprawnie i zapisywane do bazy także.
Baza z kodowaniem, utf-8 i porównywanie znaków latin2_general_ci.

Niestety zapis z mojego komponentu do bazy danych jest z krzaczkami...
tj. jak sprawdzam zmienną do zapisu wszystko jest ok, a do bazy zapisuje sie krzywo...

Gdy zmieniłem w pliku database.php linię

@mysql_query("SET NAMES 'utf8'", $this->_resource);
na

@mysql_query("SET NAMES 'latin2'", $this->_resource);
do bazy zapisuje poprawnie, lecz na stronie są krzaki i zmiana w przeglądarce na inne kodowanie nie daje efektu (są inne krzaczki)...

Już nie wiem jak się do tego dobrać...

zwiastun
10-02-2009, 00:16
Witam
Mam kurcze nietypowy problem z Joomla 1.0.15 JIE UTF...
Strona jak i artykuły wyświetlają się poprawnie i zapisywane do bazy także.
Baza z kodowaniem, utf-8 i porównywanie znaków latin2_general_ci.

Niestety zapis z mojego komponentu do bazy danych jest z krzaczkami...
tj. jak sprawdzam zmienną do zapisu wszystko jest ok, a do bazy zapisuje sie krzywo...

Co w takim razie jest niepoprawne, skoro strona, jak i artykuły wyświetlają się poprawnie?

robdk
10-02-2009, 00:27
właśnie problem jest..
Znaczy się dane wprowadzane przez dodanie nowego artykułu wszystko się zapisuje poprawnie. Niestety z mojego komponentu nie, choć string wejściowy jest poprawny....
Gdy zmieniłem tą linię w database.php - zapisało poprawnie, ale tak nie może zostać bo się cała strona wtedy źle wyświetla.
Ogólnie komponent działał ale w wersji joomli na ISO na innym serwerze.
Całość została przeniesiona na nowy serwer z UTF8.
Oczywiście skopiowane zostały wszystkie pliki od wersji Joomli utf8, oraz całość komponentu przekonwertowana do utf-8.

Nigdy nie miałem takiego problemu... heh

zwiastun
10-02-2009, 00:30
Dalej nie rozumiem? Czy chodzi o jakiś własny komponent?

robdk
10-02-2009, 00:37
tak, zapis z własnego komponentu...
Instrukcja SQL poprawna

$database->setQuery($sql);
$database->query();
if($database -> getErrorNum()){
echo $database -> stderr();
exit();
}
zapisuje poprawnie lecz w złym kodowaniu...
W poprzedniej wersji było OK

zwiastun
10-02-2009, 00:39
Obejrzyj sobie tabelę tego komponentu w phpMyAdminie. Prawdopodobnie masz w tej tabeli inaczej zdefiniowane kodowanie lub metodę porównywania napisów.

robdk
10-02-2009, 00:42
oto chodzi, ze już to sprawdzałem kilka razy, zakładałem tabele komponentu na różne sposoby, dawałem różne porównania i jka były krzaki tak są...
choć może jeszcze spróbuję ponownie...

Zasadniczo te krzaki w bazie to znaki zapytania...