PDA

Zobacz pełną wersję : Polskie znaki - latin2 - iso8859-2 - brak pomysłów



Trek
13-06-2006, 10:28
Witam,

Nie mogę poradzić sobie z polskimi znakami. Ustawiam bazę na Latin2, wszystko konfiguruję na iso-8859-2. Instaluję joomlę lub mambo i po instalacji uzyskuję znaki zapytania.

Podaję konfigurację komputera.
Mandriva Linux release 2006.0 (Official) for i586
MySQL = mysql Ver 14.7 Distrib 4.1.12, for mandriva-linux-gnu (i586)
Apache = apache-base-2.0.54-13.2.20060mdk
PHP = apache-mod_php-2.0.54_5.0.4-4mdk
joomla = 1.0.8-pl
mambo = wszystkie wersje.

Dla mambo i joomla problem jest ten sam. Znaki zapytania.
Łączę się z MySQL klientem, w którym skonfigurowałem następujące ustawienia:
Server characterset: latin2
Db characterset: latin2
Client characterset: latin2
Conn. characterset: latin2

Bazę założyłem w następujący sposób:
mysql> create database joomla
character set latin2
collate latin2_general_ci;

Wpisuję dane tak, żeby było poprawnie dla iso-8859-2 i nadal znaki zapytania na stronie WWW.

Proszę o pomoc, sprawa pilna bo dotyczy pracy zawodowej.
Z góry dziękuję

Trek

P.S. Forum przeglądam co 15 min patrząc czy ktoś odpisał.

nexus246
13-06-2006, 11:07
Spróbuj w index.php dopisać po includowaniu joomla.php


$database->setQuery('SET NAMES \'latin2\'');
$database->query();


Ewentualnie sprawdz w httpd.conf
* Default Language (ustaw pl),
* AddLanguage pl .po (czy jest)
* AddDefaultCharset ISO-8859-2

Rybik
13-06-2006, 11:18
chopcy :) jest biznes ... może by kto machnął mały poradnik do samodzielnego tworzenia i konfigurowania bazy SQL pod Joomla z naciskiem na polskie krzaczki. Ja o SQL to wiem, że jest i tam może w pół dnia jakieś zapytanie zmontuje (->zerżnę z netu) ale o tworzniu bazy i tego co tam od podszewki trzeba to ni w ząb, przyznję bez bicia. A przydałoby się cos na ten temat, bo tutoriali i manuali mamy naprodukowane i i tak nikt tego nie czyta a tak to może chociaz ja sie czegos naucze :D

W zamian moge zaoferowac ... hmm ... zdjęcie dziewczyny z przedszkola i paczke batoników marcepanowych oraz dedykowaną wersję Punkinstallera :p

Trek
13-06-2006, 12:40
Dziękuję nexus246.

Podziałała zmiana w index.php i wpisy:

$database->setQuery('SET NAMES \'latin2\'');
$database->query();
Apache był skonfigurowany poprawnie.

A teraz pytanie do polskich developerów lub ludzi związanych z Joomla na poważnie.
Jak reszta społeczeństwa instaluje joomle/mambo? Co robią innego niż ja? Ja wziąłem płytę, zainstalowałem Mandrivę wraz z Apache, MySQL, PHP. Skonfigurowałem wszystko do pracy z iso-8859-2 (latin2). Sciągnąłem polską wersję joomla/mambo i zainstalowałem. Czy ktoś, widzi coś niepoprawnego w moim działaniu? Po instalacji nie widzę polskich znaków. Muszę grzebać w kodzie i dopisywać jak widać oczywisą rzecz (latin2)? O co w tym chodzi? To jaka to jest poslska wersja skoro należy zmodyfikować do polskich ustawień?!

Oczekuję, że do dyskucji włączy się jakaś osoba, która wniesie coś co przekona mnie, żebym zaczął używać joomli.

Pomimo tego, że powyższe zadziałało chciałbym znaleźć jakieś ustawienie systemowe, które mam niepoprawnie lub przełącznik konfiguracyjny. Nie chcę w nowo instalowanym produkcie zmieniać kodu.

Rybnik nie obraź się, ale oczekuę w tym wątku bardziej konstruktywnych odpowiedzi.

Trek
13-06-2006, 14:30
Skoro już wiem, że do kawki muszę przeczytać kod joomli to znalazłem plik:

includes/database.php a wnim komentarz

//@mysql_query("SET NAMES 'utf8'", $this->_resource); Odkomentowałem, zmieniłem na iso-8859-2 i uzyskałem to samo co poradził nexus246 w drugim poście. Nadal nie jestem przekonany, że tak to powinienem wykonywać dla klientów.

Czy innym to naprawdę funkcjonuje, bez problemów? Może większość użytkuje Windows? Ja próbowałem już na dwóch dystrybucjach Fedora Core 4 i Mandriva 2006. W obu ten sam rezultat - znaki zapytania po standardowej instalacji.

Co sądzicie o tej modyfikacji?
Czy jest ona konieczna i czy to jest to miejsce gdzie muszę dokonać modyfikacji dla kodowania latin2/iso-8859-2?

fanti
13-06-2006, 16:25
No to tak,
Instalka do gentoo, internet lub płyta.
Potem emerge apache2 mod php mod sql, (szczegóły w dokumentacji)

Joomla! do 1.0.8 w tej chwili z tego serwerka i juz.
Działa i żadnych problemów - chyba że coś dorzucisz - np VM,

Rybik
13-06-2006, 17:38
@Trek - Rybnik to miasto niedaleko mnie ... to nie była odpowiedż tylko postulat - zapytanie, miedzy innymi o to zeby ludzie znajacy sie na tym zebrali rozne uwagi do kupy, pogadali razem w jednym topiku i pomogli zmontowac zestaw porad, do ktorego zawsze mozna bedzie skierowac ludzi natrafiajacych na powtarzalne problemy, lub poczatkujacych, ktorzy chcieby sie nauczyc czegos nowego.

Nie obrazam sie, chce zwrocic uwage ze tresc i forma mojego postu ewidentnie wskazywaly na to ze nie jest to odpowiedz. Na razie klopot polega na tym, ze (najczesniej i nikogo nie obrazajac) ci, ktorzy znaja bazy danych na wylot, ucza sie Joomla a ci, ktorzy znaja Joomla z praktyki i poprawek eksperymentalnych poruszaja sie po omacku w temacie niektorych istotnych zagadnien z bazami danych. Moze to tylko kwestia zmobilizowania do publikacji kilku tekstow ?

Przydałoby sie zebrac i opisac dane dotyczace kodowania znakow. Wraz z rosnaca iloscia uzytkownikow Joomla, pojawi sie wiecej osob (statystycznie) nie korzystajacych z "zewnatrznych" hostingow, z ktorymi w temacie kodowania polskich karzakow nie ma problemu.

Na jednym s hostingów mam :
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
System porównań dla połączenia MySQL: utf8_unicode_ci
System porównywania napisów w tabelach:latin2_general_ci
Joomla 1.0.8 PL wersja ISO-8859-2 z polskim panelem admina z www.joomla.pl (http://www.joomla.pl)
Konfiguracja Joomla: $mosConfig_locale = 'pl_PL';
PHP: SQLite Encoding iso8859

Nie wiem, które mogą byc dla Ciebie przydatne, ale wszystko chodzi bez zarzutu w kliku językach. Pewnie uklęknę, jak będe sie musiał przestawić na UTF "zarządzeniem odgórnym".

zwiastun
13-06-2006, 19:08
Oczekuję, że do dyskucji włączy się jakaś osoba, która wniesie coś co przekona mnie, żebym zaczął używać joomli.

Ja tam przekonywać nie będę. Wcale nie musisz Joomli używać. Możesz pisać swe strony w hTML, możesz skorzystać z jednego z dziesiątków innych systemów zarządzania treścią. Polecam www.opensourcecms.com (http://www.opensourcecms.com/), gdybyś miał problem w znalezieniu takiego, który Ci spasuje.

A wracając do rzeczy: Joomla jest w fazie dostosowywania do PHP5 i MySQL 4.1. Do poprawnego połaczenia z bazą MySQL 4.1 wymaga bibliotek. W katalogu /includes masz po to 3 pliki
- database.php
- database.mysql5.php
- database.mysqli.php

To raz
Dwa: jak się przekonałes, wcale nie trzeba było dopisywać czegoś tam w pliku index.php szablonu, bo odpowiednia - co prawda wyremowana - instrukcja jest. Do wykorzystania w sytuacjach, w których coś z jakichś konkretnych powodów nie działa tak, jak się można spodziewać.

Trzy: Skoro w 90-99% przypadków ludziom działa, a w 1-10% nie, to pozostają pytania, których serię zadałeś. Rzecz w tym, że stwierdzenie, iż jest coś skonfigurowane dobrze, to Twoje przekonanie, może nawet potwierdzone sprawdzeniem 15 opcji i...

Cztery
W PCL Joomla nie ma grupy zawodowych programistów, specjalistów od PHP, baz danych, itd, a jedynie grupa takich samych użytkowników Joomli, jak wielu innych - korzystających z bezpłatnego oprogramowania Open Source, tym się różniącego od komeryjnego, przynajmniej teoretycznie, że czasem nie wszystko działa i trzeba podłubać na szczęście w otwartym kodzie, dopytać się na forum, przeglądać dyskusje na forum projektu, zapytać projektantów systemu, gdy jakiegoś problemu nie udaje się rozwiązać, itd.

Zwłaszcza, gdy się wykonuej prace dla klientów. Bo to jednak nieco inna sytuacja niż ta, kiedy robisz dla siebie.

I na koniec - ile czasu upłynęło od zgłoszenia przez Cię problemu do jego rozwiązania?

Trek
14-06-2006, 10:37
Dzięki zwiastun.
Teraz wszystko mi się poukładało.
Napisałem kawałek kodu, który pokazuje ustawienia sesji lub globalne dla PHP w połączeniu z MySQL. Może to posłużyć do diagnozowania konfiguracji.

<?php
$link=mysql_connect('localhost', 'użytkownik', 'hasło') or
die('Nie można się połączyć: ' . mysql_error());
mysql_select_db('baza');
// Odremować odpowiednie zapytanie.
// Dla nowo tworzonych sesji
// $result = mysql_query("show global variables");
// Dla aktualnej sesji
$result = mysql_query("show session variables");
echo "<pre>";
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf ("ID: %s Nazwa: %s\n", $row[0], $row[1]);
}
echo "</pre>";
mysql_free_result($result);
mysql_close($link);
?>
Kod należy przekleić do pliku .php i obejrzeć w przeglądarce.

Może ktoś znający się dobrze na kodzie Joomli podałby miejsce gdzie można to wkleić i zobaczyć wynik na stronie Joomli (np w stopce lub na dole strony). Zwiastun nie wiesz gdzie tego dokonać? To byłoby coś fajnego i całkiem przydatnego.

Rybik
14-06-2006, 16:55
zainkludowac footer.php w odpowiednim miejscu template'a, kod wstawic do pliku /includes/footer.php
uzyc bota do wstawiania kodu php w tresci
wykonac kopie plikow jakiegos najprostszego modulu i na tej podstawie zrobic wlasny modl z ta trescia pod inna nazwa

Trek
15-06-2006, 09:36
Jak pierwszy punkt z łatwością rozumiem to nad resztą muszę trochę popracować. To mi zajmie parę chwilek.

W instrukcji do mysql znalazłem jeszcze ciekawy parametr do pliku /etc/my.cnf

[client]
default-character-set=latin2 Wymusza on kodowanie znaków dla klientów łączących się z bazą.
U mnie jednak to nie funkcjonuje dla mojej trójcy w FC4: Apache + PHP + MySQL.
To jest wymierająca funkcja. Zastępują ją:

character-set-server=latin2
collation-server=latin2_general_ci

sliders
20-06-2006, 14:46
Mianowicie kodowanie jest teoretycznie dobre na niektorych templatkach ale, jak korzystam z templatki 247portal to przy niektórych artykułach wysypuje mi kodowanie mianowicie automatycznie przełancza strone w inne kodowanie, dzieje się też tak w głównym menu wszystko z pozoru wygląda prawidłowo ale jak klikne np w aktualnośći to automatycznie mi przekodowuje wszystkie znaki na środkowoeuropejski (windows) i wtedy gubi wszystkie polskie literki a jak przełanczam pomiędzy artykułami lub w menu to czasami jest dobrze a czasami żle.

dzieje się tak tylko w explore'ze

nawet jak ustawie ręcznie kodowanie w przeglądarce to samo przeskakuje na inne gdzie można to zmienić albo jak to poprawić ?

Rybik
20-06-2006, 16:02
a nie masz tam artykulow wklejanych z innych stron ?

sliders
20-06-2006, 20:00
hmm częściowo mam ale nie wszystkie ale senk jest w tym że nawet tam gdzie nie są skopiowane i nawet nie ma tam textu też nie ma polskich znaków np. menu tam przeciesz sam wprowadzałem text a artykuły wcześniej wkopiowałem do notatnika i dopiero potem je przeniosłem na strone a wiec nie posiadają własnego formatowania wedłuk kodu html bo sprawdzałem to

Rybik
20-06-2006, 20:33
zostaw linka dla potomnych i napisz co to za wersja J! sprawdz w templaku linie z charsetem czy sa poprawne, bo jak tylko IE szaleje to moze byc blad skladni

sliders
20-06-2006, 21:46
zostaw linka dla potomnych i napisz co to za wersja J! sprawdz w templaku linie z charsetem czy sa poprawne, bo jak tylko IE szaleje to moze byc blad skladni
oto cały head plus kodowanie

<?php echo "<?xml version=\"1.0\"?".">"; ?>
<!--<?php defined( "_VALID_MOS" ) or die( "Direct Access to this location is not allowed." );$iso = split( '=', _ISO );echo '<?xml version="1.0" encoding="'. $iso[1] .'"?' .'>';?>-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;><?php echo _ISO; ?>" />
<?php mosShowHead(); ?>
<?php if ( $my->id ) { initEditor(); } ?>
<?php echo "<link rel=\"stylesheet\" href=\"$GLOBALS[mosConfig_live_site]/templates/$GLOBALS[cur_template]/css/template_css.css\" type=\"text/css\"/>" ; ?><?php echo "<link rel=\"shortcut icon\" href=\"$GLOBALS[mosConfig_live_site]/templates/247portal/favicon.ico\" />" ; ?>
<link rel="alternate" title="<?php echo $mosConfig_sitename; ?>" href="<?php echo $GLOBALS['mosConfig_live_site']; ?>/index2.php?option=com_rss&no_html=1" type="application/rss+xml" />
<script language="JavaScript" type="text/javascript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
<style type="text/css">
<!--
.Stil1 { font-size: xx-small;
color: #FFFFFF;
}
-->

</style>
</head>

sliders
20-06-2006, 22:12
znalazlem bład udało mi się dzięki za podpowiedz z informacja dotycząca literówki, błędu, sprawdzałem wcześniej ale nie dostrzegłem tego dopiero teraz wpadłem na nawias i go usunołem ">" i jak ręką odioł błąd znikł, a już chciałem podać ręcznie ;) parametry kodowania ale od czego są skrypty ;)



<head>
<meta http-equiv="Content-Type" content="text/html;><?php echo _ISO; ?>" />
......
</head>

Rybik
21-06-2006, 00:05
wlasnie o ten blad mi chodzilo ale jakos tak ... dzien bez jasnowidzenia ;)

triohl
18-06-2007, 15:05
Witam,
mam problem z polskimi znakami w joomli -wyświetlają się znaki zapytania. Czynności, które były tu przedstawione wykonałem. We wszystkich plikach konfiguracyjnych (apache2,mysql,php) ustawiłem iso. Baza danych jest w kodowaniu iso. Natomiast głównym kodowaniem w systemie (ubuntu 7.05) jest utf-8.

Z braku pomysłów rozwiązania problemu wkleiłem do php kod pokazujący stan zmiennych. Nie będę wklejał całego pliku, tylko najważniejszy fragment.
Przy ustawionym:


// Dla aktualnej sesji
$result = mysql_query("show session variables");


w sekcji odpowiedzialnej za kodowanie mam:

ID: character_set_client Nazwa: latin1
ID: character_set_connection Nazwa: latin1
ID: character_set_database Nazwa: latin2
ID: character_set_filesystem Nazwa: binary
ID: character_set_results Nazwa: latin1
ID: character_set_server Nazwa: latin2
ID: character_set_system Nazwa: utf8
ID: character_sets_dir Nazwa: /usr/share/mysql/charsets/
ID: collation_connection Nazwa: latin1_swedish_ci
ID: collation_database Nazwa: latin2_general_ci
ID: collation_server Nazwa: latin2_general_ci

czyli nie tak, jak powinno być, natomiast gdy zrobię tak :


$result = mysql_query("show global variables");
// Dla aktualnej sesji
//$result = mysql_query("show session variables");


ID: character_set_client Nazwa: latin2
ID: character_set_connection Nazwa: latin2
ID: character_set_database Nazwa: latin2
ID: character_set_filesystem Nazwa: binary
ID: character_set_results Nazwa: latin2
ID: character_set_server Nazwa: latin2
ID: character_set_system Nazwa: utf8
ID: character_sets_dir Nazwa: /usr/share/mysql/charsets/
ID: collation_connection Nazwa: latin2_general_ci
ID: collation_database Nazwa: latin2_general_ci
ID: collation_server Nazwa: latin2_general_ci

Czyli tak, jak powinno być. Tak, jakby dla lokalnej sesji było źle, a globalnie dobrze. W joomli w panelu mam wybrane kodowanie iso 8859-2.

Czy może mi ktoś pomóc? Mam pełen dostęp do systemu i jego konfiguracji.

Pozdrawiam