UTF8 vs ISO8859-2

Anonymous képe

Sziasztok, van egy szerver, amin a lapom van. A szerver ugy van beallitva, hogy alapbol ISO8859-2-es lapokat szolgaltasson. Ezen sajnos nem tudok valtoztatni, mert nem enyem a szerver.

Ezutan a drupal lapom, ami egyebkent utf8-al van kodolva, jol megjelenik, nincs vele semmi gond. A gond ott keletkezik, amikor mas lapok is hasznalni szeretnenek valamit belole (konkretan rss feed-et) akkor az rosszul jelenik meg naluk, az ekezetek helyett csak kodokat lehet latni.

Megneztem az rss feed-et, amit a drupal general, nincs benne semmilyen kodolasi informacio.

Az a kerdesem, hogy hogyan lehet atallitani a drupalt, hogy mas codepage-t hasznaljon? Mielott valaki ravagna, hogy a theme-t kell javitani, elmondom, hogy nem mukodik, valahol melyebben van a dolog nyitja.

Hojtsy Gábor képe

Az XML alap kódolása az UTF-8, és különben a Drupal ezzel a kódolással küldi az RSS-eket (a HTTP fejléccel tudatva a tényt, csakúgy, mint a HTML oldalaknál). Vevő oldalon olyan RSS olvasót kellene használni, ami támogatja az utf8-at, ez ma már nem nagy követelmény.

0
0
Anonymous képe

Szia, en is belefutottam ebbe a problemaba. Ertem, amit mondasz, es egyet is ertek (nagyjabol). Nekem is azert van ezzel bajom, amiert a kolleganak, nem rss olvasoban nezzuk a dolgokat. Ha az rss-t en utf-ben adom kozze, akkor azok a weblapok (itt nem rss olvasokrol van szo), amiknek a codepage-e 8859-2 rosszul jelenitik meg.

Azt megsem mondhatom minden lapnak, amelyik at szeretne venni a hireimet, hogy javitgasson a megjelenitojen, emiatt gondolja at az oldala ezen reszet...

Udv
Horrr
irclabor.hu

0
0
yaanno képe

Meg kéne próbálni azt, hogy jóllehet a lap (gondolom php) alapkódolása valamilyen iso (pl. 8859-2), a drupalról érkező feed kódolását be kellene állítani abban a blokkban, ahol meg akarod jeleníteni; a böngésző számára elvileg nem lehet akadály, hogy egy lap különböző kódolású elemeket tartalmazzon és azokat helyesen jelenítse meg. Az adott blokk kódolását és nyelvét xhtml alapokon biztosan be lehet állítani. De ennek utánanézek alaposabban - ez csak 1 tipp. Egyébként ha php szkript állítja elő a feed-ből a blokkot, akkor ez nem lehet túlságosan bonyolult feladat, a blokkot megfelelő attribútumokkal kell ellátni.

0
0
yaanno képe

A weblabor.hu-n viszont van 1 elegáns (vagy: felhasználóbarát) megoldás: 2féle kódolással kínálnak szindikációt.
http://weblabor.hu/rss/miez?href=rss/szerkesztett

0
0
yaanno képe

A node.module kódjába én a következőt illesztettem be és úgy tűnik működik is (valahol az 1190-ik sor körül, ahol az $output-ot kezdi feltölteni):

if ($enc="iso") { $output = " *** itt beállítod az iso kódolást ***"; }
else { $output = "*** itt meg az utf-8-at ***"; }

És akkor ezt szindikálod az izzósoknak:

www.oldalam.hu/taxonomy/term/tid/0/feed?enc=iso

A teljes kódrészletet ide nem tudtam betenni, de asszem egyértelmű.

Ha nem működik ez a megoldás, akkor le kell fordítani a tartalmat.

0
0
yaanno képe

Ha van iconv támogatás a szerveren (az utf-8 szövegek "fordítása"), akkor ehhez egy kis segítség:

$text1 = "ma délután ősöm elálmosodott";
print "$text1";
$text2 = iconv("iso-8859-2", "utf-8", "$text1");
print "$text2";
$text3 = iconv("utf-8", "iso-8859-2", "$text2");
print $text3;

A bemeneti szöveget utf-8-asítja, majd vissza. Végülis mindegy hogy melyik szerveren csinálod meg ezt - ott ahol fogadják a szindikált tartalmat, vagy a te drupalos oldaladon.

Időközben az alábbi módosításokat végeztem:

if ($enc="iso")
{
$output = "*** beállítod az isot ***";
/* többit nem bántod */
  drupal_set_header('Content-Type: text/xml; charset=iso-8859-2');
  $output = iconv("utf-8", "iso-8859-2", "$output");
  print $output;
}
else 
{
$output = "*** beállítod az utf-8-at ***";
/* többit nem bántod */
drupal_set_header('Content-Type: text/xml; charset=utf-8');
print $output;
}
0
0
Anonymous képe

Szia, kosz a sokfele otletet, valoszinuleg az lesz a nyero, hogy ketfelekeppen fogom kitenni az rss-t.

Mint mondtam, ez mas lapok problemaja, amelyek nem tudjak feldolgozni az utf8-as feed-et, mert a lap 8859-2-vel van kodolva. A lapok nagy resze nem drupal, es mivel nem az enyemek, semmi rahatasom nincs (btw a dupal siman veszi az akadalyt, mivel utf8 az alapkodolasa).

Azon gondolkozom, hogy nem egy ilyen beirogatos trukkel oldom meg, mert akkor minden frissitesnel figyelni kell ra, megint be kell irni, stb, hanem egy modult irok, a mostani syndycate helyett, ami onmagaban megoldja ezt a problemat, raadasul mivel modulrol van szo, egy frissites eseten nem sok gond lesz vele (kiveve persze, ha a modul api valtozik).

Meg egyszer kosz
Horrr

0
0