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.
  1. <?php  
  2. @mysql_connect("localhost""x""x"or die(mysql_error());  
  3. @mysql_select_db("x"or die(mysql_error());  
  4.   
  5. header("Content-type: text/xml");  
  6.   
  7. echo"<?xml version=\"1.0\" encoding=\"utf-8\" ?>";  
  8. echo"<rss version=\"2.0\">";  
  9.   
  10. echo"<channel>";  
  11.   
  12. echo"<title>X</title>";  
  13. echo"<description>X RSS Feed</description>";  
  14. echo"<link>http://x.hu</link>";  
  15.   
  16. $query = mysql_query("SELECT id, cim, szoveg, datum, fnev_id, kat_id FROM news"or die(mysql_error());  
  17. while ($rows = mysql_fetch_assoc($query)) {  
  18. echo"<item>";  
  19. echo"<title>{$rows['cim']}</title>";  
  20. echo"<description>a</description>";  
  21. echo"<link>http://allgadgetsreviewed.com/nokia3650.html</link>";  
  22. echo"</item>";  
  23. }  
  24.   
  25. echo"</channel>";  
  26.   
  27. echo"</rss>";  
  28.   
  29. ?>  
 
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.