ugrás a tartalomhoz

RSS-t készítenék PHP-vel, de aacute nem definiált

Anonymous · 2006. Május. 31. (Sze), 13.59
A problémám az hogy az sqlből kiszedett adatok kilistázása után kapok egy hibaüzenetet A következő nem definiált entitásra hivatkozott: 'Aacute'. Hiba történt a(z) 'http://localhost/feed.php' erőforrás feldolgo...

Gondoltam ékezet probléma lesz ezért egy kifejezetten ékezet nélküli adatot listáztam ki, az jól ment. Kódolást is beállítottam, nem segített.

<?php
@mysql_connect("localhost", "x", "x") or die(mysql_error());
@mysql_select_db("x") or die(mysql_error());

header("Content-type: text/xml");

echo"<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
echo"<rss version=\"2.0\">";

echo"<channel>";

echo"<title>X</title>";
echo"<description>X RSS Feed</description>";
echo"<link>http://x.hu</link>";

$query = mysql_query("SELECT id, cim, szoveg, datum, fnev_id, kat_id FROM news") or die(mysql_error());
while ($rows = mysql_fetch_assoc($query)) {
echo"<item>";
echo"<title>{$rows['cim']}</title>";
echo"<description>a</description>";
echo"<link>http://allgadgetsreviewed.com/nokia3650.html</link>";
echo"</item>";
}

echo"</channel>";

echo"</rss>";

?>
 
1

rossz a charset

amonrpg · 2006. Május. 31. (Sze), 15.13
Helló!

Rosszul van a DB-ben a szöveg eltárolva. html_entity_decode környékén nézz körül a php.net -en.
Valószínűleg iso-8859-1-ben van eltárolva a szöveged, html entity-kkel.
S ez nem UTF-8.
2

iso-8859-2

Anonymous · 2006. Május. 31. (Sze), 15.17
A típusa latin2, az eltárolás szerintem iso-8859-2, legalábbis az van a php oldalon ahol hozzáadom a hírt.
3

iso-8859-1-2

amonrpg · 2006. Május. 31. (Sze), 16.57
Az adatbázisé is?
A tábláé is?
Az oszlopé is?
A mysqld-é is?
A connection-é is?

Amúgy lehet iso-8859-2 is, de semmiképpen sem utf-8, akkor miért várod, hogy a html entity-ket elfogadja?
4

iso-8859-2

Anonymous · 2006. Május. 31. (Sze), 17.28
iso-8859-2re rakva is ugyan azt produkálja, mysqlbe minden latin2.
5

megoldás?

Anonymous · 2006. Május. 31. (Sze), 21.50
Nem tudtok vmi megoldást?:(
6

megoldás kettő is

amonrpg · 2006. Május. 31. (Sze), 22.25
A csúnya (nem javasolt):
- A kimenő adatokat átereszted egy html_entity_decode-on, meg a speciális karaktereket kézzel lecseréled (elvileg a fgv. nem támogatja az iso-8859-2-t, ezért néhány maradékot neked kell lecserélned) Egyébként ezt már írtam, de úgy tűnik olvasni lusta vagy. (php.net, html_entity_decode fgv.)

- Fogod az egész hóbelebancot és átteszed UTF-8-ba, ahogyan már az elején is kellett volna. Minden HTML oldalt, minden adatot a DB-ben, mindent. Ez már ér is valamit.

Utólag javítani az elcseszett charsetelést meglehetősen nyűgös feladat, ezért mindig érdemes előre gondolni rá, és UTF-8-at használni, az atombiztos.
7

utf8

Anonymous · 2006. Május. 31. (Sze), 22.43
akkor ha mindenhol átírom utf8ra, html fejlécekben, dbkben, akkor már nem lehet nagy problémám a jövőben? nem jár semmi problémával jelenleg ez az egész móka mert pont fejlesztés közben vagyok, épp unatkoztam és gondoltam előre megcisnálom az rss-t, de hát elakadtam. Megcsinálom amit mondtál, köszönöm!
8

"nem lehet" olyan nincs

amonrpg · 2006. Május. 31. (Sze), 23.00
Öhm. Nos, problémád éppenséggel lehet, a programozás értelme éppen a problémamegoldás. :D
De ha konzekvensen mindenütt UTF-8-at használsz, akkor gyakorlatilag mindenféle-fajta karaktert el tudsz tárolni, és az "é" mindenütt ugyanaz az "é" marad, és sehol sem lesz &eacute;. S éppen ez a lényeg.