PDA

Zobacz pełną wersję : Polskie znaki dla RSS



pieniak
22-03-2006, 15:25
Mam problem z polskimi znakami w kanałach rss:

" któremu grozi kara ?mierci za przej?cie na chrze?cija?stwo, mo?e unikn??"

Tak to niestety wygląda. Zminiłem kodowanie w pliku "feedcreator.class" na encoding=\"iso-8859-2\ i nic nie pomogło.

Dotyczy to tylko RSS.

:confused:

pieniak
25-03-2006, 19:09
Chyba nie doczekam się odpowiedzi na moje pytanie :( Siedzę nad tym sam już kilka dni i efektu brak.
Czy ktoś ma polskie litery w wiadomościach RSS na swojej stronie ?????????
Proszę o linka do takiej strony, chyba że tak juz na razie jest i trzeba poczekać do następnej wersji Jommla.



mam Joomla! 1.0.8 Stable [ Sunshade ] 26-Feb-2006 na localhost
Wersja MySQL:: 4.0.23
Wersja PHP:: 5.0.3
Serwer WWW:: Apache/2.0.52 (Win32) PHP/5.0.3

frico
26-03-2006, 12:49
Ciekawe dlaczego nikt Ci nie odpowiedział ?

Może powodem jest to, że wiekszośc osób używa Joomli 1.8 PL, gdzie wszystko już zostało odpowiednio dostosowane. Nie ma więc problemy "pliterek" w wieściach RSS.

Jeśli więc nie chcesz wersji PL, to przynajmniej sobie ją ściągnij i porównaj pliki.

Pozdrawiam
frico

zwiastun
26-03-2006, 14:50
Dla pewności proszę jeszcze sprawdzić, bo możliwe, że to później wprowadzona poprawka i nieopublikowana

w pliku /includes/joomla.php
odszukać funkcję:
function newsfeedEncoding( $rssDoc )
i dokonać trzykrotnie poprawienia linii
//zwiast $encoding = 'utf8_decode'; poprawić na:
$encoding = 'utf8tolatin2';

pieniak
26-03-2006, 16:54
Ciekawe dlaczego nikt Ci nie odpowiedział ?

Może powodem jest to, że wiekszośc osób używa Joomli 1.8 PL, gdzie wszystko już zostało odpowiednio dostosowane. Nie ma więc problemy "pliterek" w wieściach RSS.

Jeśli więc nie chcesz wersji PL, to przynajmniej sobie ją ściągnij i porównaj pliki.

Pozdrawiam
frico

Frico - nie pomyliły Ci się wersję trochę. Nadchodzi Joomla! 1.0.9 a Ty masz 1.8 PL - tylko skąd ?????? :)

pieniak
26-03-2006, 17:01
Niestety Zwiastun mimo szczerych chęci po zmnanie na

$encoding = 'utf8tolatin2';

pojawia się

Fatal error: Call to undefined function utf8tolatin2() in C:\WebServ\httpd-users\agroportal\components\com_newsfeeds\newsfeed s.html.php on line 274

może masz jeszcze jakieś pomysły bo ja już nie mam - niestety :confused:

zwiastun
26-03-2006, 20:21
Mam, tylko nie wiem, czyś zasłużył, za czepianie się frico...:D

Ocywiscie, brakuje funkcji, bo w dobroci swojej jej nie podałem
dopisz gdzieś na końcu
function utf8tolatin2($content){
return iconv("UTF8","LATIN2",$content);
}

pieniak
26-03-2006, 22:19
Zwiastun zmieniłem to następująco:


function newsfeedEncoding( $rssDoc ) {
// test if PHP 5
if ( phpversion() >= 5 ) {
// test if page is utf-8
if ( strpos(_ISO,'utf')!== false || strpos(_ISO,'UTF') !== false ) {
$encoding = 'html_entity_decode';
} else {
// non utf-8 page
$encoding = 'utf8tolatin2';
}
} else {
// handling for PHP 4
// determine encoding of feed
$text = $rssDoc->toNormalizedString(true);
$text = substr( $text, 0, 100 );
$utf8 = strpos( $text, 'encoding="utf-8"' );

// test if feed is utf-8
if ( $utf8 !== false ) {
// test if page is utf-8
if ( strpos(_ISO,'utf')!== false || strpos(_ISO,'UTF') !== false ) {
$encoding = 'html_entity_decode';
} else {
// non utf-8 page
$encoding = 'utf8tolatin2';
}
} else {
// handling for non utf-8 feed
// test if page is utf-8
if ( strpos(_ISO,'utf') !== false || strpos(_ISO,'UTF') !== false ) {
$encoding = 'utf8tolatin2';
} else {
// non utf-8 page
$encoding = 'html_entity_decode';
}
}
}

return $encoding;
}
}
function utf8tolatin2($content){
return iconv("UTF8","LATIN2",$content);
}


i w tym momencie zginęły mi wszystkie wieści RSS :(
Tak sobie myślę czy nie zainstalować jomli jeszcze raz i czy nie przerzucić plików odpowiedzialnych za RSS, albo przynajmniej je porównać !!!
Czy wogóle jest to wykonalne ???
A może to wina jakiegoś zainstalowanego dodatku lub komponetu ?????

Pozdrowienia, dzieki za cierpliwość
Dobranoc

frico
26-03-2006, 22:25
Nadchodzi Joomla! 1.0.9 a Ty masz 1.8 PL - tylko skąd ?????? :)

Ależ popędziłem ... Racja oczywiście. Miałem na myśli 1.0.8 PL
Tak to jest jak człowiek już skrótowo zaczyna mysleć.


Pozdrawiam
frico

adamszmu
30-03-2006, 23:54
sprubuj odpalic joomle na serverze php4. ja na php5 mam ten sam problem na php4 dziala ok

pieniak
04-04-2006, 10:52
Zainstalowałem Jommlę od nowa i sprawdziłem czy w kanałach RSS będą polskie znaki - niestety. Wychodzę z założenia że może to być wina mojego localhosta i postanowiłem wstrzymać się z jakimikolwiek zmianami do czasu wrzucenia portalu na serwer w sieci.

Mój locahost to:

Webserv 1.2 a w nim:

Apache 2.0.52
PHP 5.0.3
MySQL 4.0.23

Pozdrawiam

Rybik
05-04-2006, 04:17
ogranicz zestaw komend php do 4.x
w pliku .htaccess dopisz linijke:

SetEnv PHP_VER 4

pieniak
05-04-2006, 08:45
Niestety Rybik dalej jest:

Jan Krzysztof Ardanowski b?dzie przebywa? w Zagrzebiu gdzie we?mie udzia? w konferencji dotycz?cej przysz?o?ci rolnictwa w nowych krajach cz?onkowskich UE

mimo dodania SetEnv PHP_VER 4 do pliku htaccess.txt (innego pliku tego typu nie mam):confused:

Dzięki za pomoc. Czekam na kolejne propozycje - chętnie potestuję coś jeszcze. :)

Pozdrowienia

palik
05-04-2006, 09:02
proponuję mienić nazwę z htaccess.txt na .htaccess (kropka z przodu, bez rozszerzenia) inaczej serwer w ogóle nie bierze tego pliku pod uwagę...

jeśli w tym htaccess.txt są inne komendy jeszcze to może żeby nie zamotać sytuacji skopiuj je sobie gdzieś a w pliku zostaw tylko to co radził ci Rybik...

pozdravki!

pieniak
05-04-2006, 09:51
Palik - niestety po zmianie nazwy pliku na .htaccess pojawiła się pusta strona i :


BŁĄD 500

Wewnętrzny błąd serwera!
WebServ 1.2 (Apache 2.0.52, PHP 5.0.3, MySQL 4.0.23)

:(

palik
05-04-2006, 10:44
czyli serwer jest tak skonfigurowany że nie pozwala na .htaccess z tą komendą... a jeszcze jedna uwaga ode mnie - nikt nie zauważył chyba że kiedy skorzystałeś z porady zwiastuna dopisałeś funkcję utf8tolatin2 poniżej kodu który tę funkcję wywoływał, a dodatkowo chyba za dużo o jeden nawias klamrowy jest - to mogło być przyczyną braku rss - może wystarczyłoby przenieść kod tej funkcji nad kod funkcji w której wywołujesz utf8tolatin? jeśli nie pomylisz się z nawiasami klamrowymi to spróbuj to zrobić. Poniżej wkleiłem ci kod który sprawdziłem pod względem nawiasów (ale na szybko więc jeszcze raz sprawdź), z funkcją utft8olatin umieszczoną we właściwym miejscu...

nie do końca orientuję się jak joomla rodzi sobie z php5 - o ile na serwerze docelowym będzie php4 bardzo bym ci radził zmienić sobie localhosta na możliwi podobne ustawienia co serwer na którym wyląduje strona...

inne miejsca do sprawdzenia to konfiguracja apache, plik w conf/httpd.conf (u mnie) i sprawdzenie czy masz wpis:

AddDefaultCharset ISO-8859-2

lub

AddDefaultCharset UTF-8

(ja mam oba ale u ciebie może któregoś brakować, zależnie od żądanego kodowania)

poniżej ten kod o którym pisałem



function utf8tolatin2($content){
return iconv("UTF8","LATIN2",$content);
}


function newsfeedEncoding( $rssDoc ) {
// test if PHP 5
if ( phpversion() >= 5 ) {
// test if page is utf-8
if ( strpos(_ISO,'utf')!== false || strpos(_ISO,'UTF') !== false ) {
$encoding = 'html_entity_decode';
} else {
// non utf-8 page
$encoding = 'utf8tolatin2';
}
} else {
// handling for PHP 4
// determine encoding of feed
$text = $rssDoc->toNormalizedString(true);
$text = substr( $text, 0, 100 );
$utf8 = strpos( $text, 'encoding="utf-8"' );

// test if feed is utf-8
if ( $utf8 !== false ) {
// test if page is utf-8
if ( strpos(_ISO,'utf')!== false || strpos(_ISO,'UTF') !== false ) {
$encoding = 'html_entity_decode';
} else {
// non utf-8 page
$encoding = 'utf8tolatin2';
}
} else {
// handling for non utf-8 feed
// test if page is utf-8
if ( strpos(_ISO,'utf') !== false || strpos(_ISO,'UTF') !== false ) {
$encoding = 'utf8tolatin2';
} else {
// non utf-8 page
$encoding = 'html_entity_decode';
}
}
}

return $encoding;
}


ciężko w ciemno pomagać, pamiętam że z rss miałem duże problemy ze znalezieniem miejsca w którym na sztywno wpisane było iso-8859-1 zamiast 2, i zajęło mi to sporo czasu... myślę że jak wrzucisz na serwer stronę będzie dużo łatwiej ci pomóc :)

powodzenia!

staho
10-06-2006, 23:46
Trochę już czasu minęło, ale ponieważ potknąłem się o ten sam temat, dodam swoje conieco. Instalowałem J1.0.8PL i polskich literek nie miałem

1. W includes/joomla.php nie uwzględniono kodowania zapisanego jako UTF-8 (wielkimi literami). Stąd potrzebna jest poprawka, np.:
z: $utf8 = strpos($text, 'encoding="utf-8"' );
na: $utf8 = strpos(strtolower($text), 'encoding="utf-8"' );

2. Zmiana utf8_decode na utf8tolatin2 nie załatwia sprawy, bo unicode ma sporo znaczków, które w latin2 nie występują. W podręczniku PHP (http://pl.php.net/manual/pl/function.utf8-decode.php#19531) przy funkcji utf8_decode jest natomiast zamieszczona funkcja utf8ToUnicodeEntities, która wszystko poza ASCII zamienia na &#xxx; -- działa!

Dopiero po wprowadzeniu powyższych zmian udało mi się (http://www.legatus.org.pl/sapientia/index.php?option=com_newsfeeds&task=view&feedid=15&Itemid=7) prawidłowo wyświetlić kanały z Opoki (http://forms.opoka.org.pl/rss.php).

Rybik
11-06-2006, 16:53
jeśli w tym htaccess.txt są inne komendy jeszcze to może żeby nie zamotać sytuacji skopiuj je sobie gdzieś a w pliku zostaw tylko to co radził ci Rybik...

standardowy htaccess zawiera zestaw narzedzi do optymalizacji SEF i o ile serwer pozwala na uzywanie .htaccess to zmiana nazwy (uaktywnienie go) niczego nie zmienia, SEF wlacza sie w konfiguracji, a dodatkowe polecenia do tego pliku mozna spokojnie dopisywac na koncu w nowych liniach

staho
11-06-2006, 23:21
W Joomli 1.0.9 konwersja utf-iso dla kanałów RSS jest taka sama, jak dotychczas, tzn. stosuje się utf8_decode, co z założenia gubi wszystko poza ascii. Co można zrobić, by ktoś kiedyś zmienił odpowiednio includes/joomla.php?

maniek
23-04-2007, 22:11
tez mam Joomla 1.08 stable... i polskich znakow nie mam... co mzoe mi pomoc? bo tak tutaj namieszaliscie, ze nie wiem wkoncu czego sie posluchac :(

staho
24-04-2007, 13:37
zgodnie z zasadą "każda sroczka swój ogonek chwali" polecam Ci opisaną wyżej modyfikację pliku includes/joomla.php, tzn.:

1) zmienić
z: $utf8 = strpos($text, 'encoding="utf-8"' );
na: $utf8 = strpos(strtolower($text), 'encoding="utf-8"' );

oraz z: utf8_decode
na: utf8ToUnicodeEntities
2) dopisać definicję funkcji utf8ToUnicodeEntities (z podręcznika PHP)

Możesz też poczekać, bo w kolejnym wydaniu J ma być obsługa utf-8, a kolejne wydanie ma być lada chwila... a przynajmniej miało być lada chwila kilka miesięcy temu ;-)

Dakota
24-04-2007, 17:30
tez mialam problem z polskimi znakami ale po zainstalowaniu slick rss problem zniknal
podaje link do strony skad mozna pobrac modul http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,1649/Itemid,35/
zas link do strony jak wyglada dzialajacy modul jest http://www.polish-lace.5o.pl/joomla/

Jedna uwaga.... strona jest w trakcie budowy wiec prosze nie komentowac wygladu :)
Mam nadzieje, ze pomoglam :)

Pozdrawiam i zycze milego dnia
Dakota

brzoza
25-04-2007, 23:38
2) dopisać definicję funkcji utf8ToUnicodeEntities (z podręcznika PHP)


Możesz to tutaj wkleić, jeśli to nie problem?

pozdr,
Brzoza

Kasiek
29-04-2007, 16:26
Miałam identyczny problem z wyświetleniem znaków z innych stron w wiadomościach RSS. Rozwiązałam go w następujący sposób w ustawieniach serwera jest cos takiego jak interpretuj pliki .php jako PHP4 lub 5. Jak wybiore 5 wszystko sie chrzani a jak jest 4 to jest ok. Acha wskazówka jeśli wybierze się wersję PHP4 warto jeszcze raz zainstalować joomle bo po zmianie interpretacji z php5 na 4 zainstalowana wczesniej joomla pod PHP5 tez nie dzialala poprawnie. Poprawnie zadziałała dopiero po ponownym zainstalowaniu. Wersje PHP jakiej uzywa joomla mozna sprawdzic w panelu administratora zakładka system pole informacje o systemie potem pojawia sie 3 zakladki sprawdzic trzeba srodkowa PHP i tam sprawdzic version. Z PHP5 na 4 mozna zmienic na pare sposobow najprosciej zadzwonic albo napisac do Admina serwera i zapytac jak zmienić, inna metoda to użycie zakladki ustawienia PHP i wybrac PHP4 (np. tak łatwo sie zmienia na www.nazwa.pl) jesli chodzi o panel Direct Admin (wystepujacy m.in. na www.az.pl trzeba wejsc na konkretna domene pod ktora jest joomla z Zaawansowane opcje wybrać dodać Apache Handlers a potem w pole handler wpisac php4-cgi a w rozszerzenie .php A tak nawiasem mowiac kodowanie mam latin-2 general_ci w SQl-u a wersja MYSQL jest 5.0.22 a PHP 4.4.4. Używam Joomla! 1.0.11 Stable [ Sunbow ] 28 August 2006 20:00 UTC. Na głownej stronie PHPmyadmina mam : System kodowania znaków dla MySQL: UTF-8 Unicode (utf8); System porównań dla połączenia MySQL: UTF8 unicode i takie ustawienia były podczas instalacji potem po utworzeniu zieniły sie ustawienia w bazie danych joomli na latin2_general_ci. W razie jakichkolwiek kłopotów z ustrojstwem SPINACZ RSS piszczie chętnie pomogę. Pozdrawiam

Rybik
30-04-2007, 01:56
offtopic troche ale dla sprostowania i jasnosci:
Joomla powinna działać od początku na php 4.x, mysql 4.x, w bazie danych zawsze metoda porowywania znakow dla polaczen mysql : utf-8, dla tabel: latin2_general_ci.
Przy operacjach export/import trzeba pamiętać o kodowaniu latin2 i trybie zgodności MYSQL40
Na RSS metoda podana przez staho wygląda na najlepszą

raf-tv
27-09-2007, 17:21
Czy możecie załączyć plik z poprawionym kodowaniem rss bo próbowałem go poprawić wedle w/w wskazówek ale wywala błąd:(
z góry dzięki za pomoc

mery_master
03-11-2007, 01:25
tez nie moge tego rozgryzc...moze cos ruszylo ?

baca20
18-11-2007, 23:51
Staho - dzieki :)
watpilem czy mi sie uda, ale dalem rade i mi dziala. tylko ja z mateusz.pl bralem rss.

nie wiem czy komus to sie przyda, ale w pliku includes/joomla.php zmianei ulegly linijki
5124
z utf8_decode
na utf8ToUnicodeEntities
5131
z $utf8 = strpos($text, 'encoding="utf-8"' );
na $utf8 = strpos(strtolower($text), 'encoding="utf-8"' );
i 5140
z utf8_decode
na utf8ToUnicodeEntities

Joomla! 1.0.8 Stable [ Sunshade ] 26-Feb-2006 05:00 UTC

appaloosa
22-11-2007, 13:32
Ale dla jakiej wersji joomla?

gubusss
22-11-2007, 19:52
witam bardzo potrzebuje pomocy o to link http://gubus00.lua.pl
skasowałem główny baner na samej górze jak mam wstawić tam swój i jak tą rekleme google skaosować i zminić ten żółty kolor czekma na szybko odp dzieki z góry az pomoc pozdrawiam :)

mery_master
23-11-2007, 01:01
zeby rssy działały wyłączyć schowek w ustawieniach syndicata.

nefal
14-05-2009, 21:41
Mam, tylko nie wiem, czyś zasłużył, za czepianie się frico...:D

Ocywiscie, brakuje funkcji, bo w dobroci swojej jej nie podałem
dopisz gdzieś na końcu
function utf8tolatin2($content){
return iconv("UTF8","LATIN2",$content);
}

Ech. Mam joomle 1.0.15 iso i tą funkcje nadal trzeba samemu dopisac. A niby ta wersja jest juz taka stable, dopracowana i wogole ;)

Dzięki za pomoc