Problemer med charset utf-8 ISO, ø ø å i RSS

Tags:    php xml rss

Hej Udvikleren.
Jeg har hjemmeisden www.kp-foto.com
Her har jeg et RSS feed kørerne som ligger på www.kp-foto.com/rss/rss.xml
Det virker sådan set fint nok.
RSS filen henter post'ne fra min blog som ligger på www.kp-foto.com/blog/ og ligger dem ind i rss filen.
Problemet er så at hvis jeg skriver en blog post med æ, ø, å eller andre special tegn, så kan min rss fil ikke længere valideres.
Så hver gang jeg blogger skal jeg skrive oe, aa, osv.
Tro der er noget med charset'et men kan ikke gennemskue i hvilken fil jeg skal ændre hvad og hvor.
Jeg ved det kan lade sig gøre da jeg selv abonnere på andre rss feeds hvor de bruger æ, ø å.
Håber nogen kan hjælpe!
På forhånd tak!
vh
KP



10 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Edit: udvikleren.dk har en fejl som ødelagde mit oprindelige indlæg totalt. Nu har jeg indsat nogle ekstra mellemrum for at undgå at udvikleren.dk ødelægger indlægget. Lad som om mellemrummene ikke er der.

Prøv at se kildekoden til din RSS, som tydeligvis er forkert:

<item>

<title> & Atilde;& brvbar; & Atilde;& cedil; & Atilde;& yen; & Atilde;& brvbar; & Atilde;& cedil; & Atilde;& yen;</title>
<description> & Atilde;& brvbar; & Atilde;& cedil; & Atilde;& yen; & Atilde;& brvbar; & Atilde;& cedil; & Atilde;& yen;</description>
<link>http://www.kp-foto.com/blog/88/</link>

<pubDate> Sat, 22 Oct 2011 00:21 +0200</pubDate>
<guid>http://www.kp-foto.com/blog/88/</guid>
</item>

Din RSS er fyldt med HTML-koder, men RSS er ikke HTML. Det er to forskellige ting. Fjern HTML-tegnkoderne og erstat dem med de rigtige tegn.

Du bruger også disse HTML-tegnkoder i din almindelige HTML, hvor det ikke er en decideret fejl, men generelt er en dum ide at bruge dem, da det gør din kode sværere at læse og fylder mere.

Eksempel: Fjern "& aring;" og brug "å" i stedet.



Indlæg senest redigeret d. 22.10.2011 00:36 af Bruger #3143
Nu indeholder dit feed ikke nogle æ, ø eller å, og så er det jo svært for os andre at se hvad der er galt. Dit feed fortolket som UTF-8, og det gør andre sider på din side også. Der kan være mange ting galt, fx at du bruger en anden tegnkodning end UTF-8, eller at du er kommet til at kode bogstaverne med html eller lignende. Men det er umuligt at sige med mindre du laver et æ, ø eller å i dit feed, så vi kan se det.



Du bør aldrig bruge htmlentities-funktionen. Brug altid htmlspecialchars-funktionen i stedet for.



Hej Kristian,

Jeg har slev haft lidt problemer med Utf-8 derfor har jeg brugt ISO-8859-1
hvilket fungere perfekt for mig.

Fold kodeboks ind/udHTML kode 


Håber dette var hjælp nok ellers er du velkommen til at skrive tilbage til mig.

Mvh. Malte



Hej Malte.
Tak for buddet. Jeg har prøvet at ændre rss.xml filen til ISO-8859-1, men det ændre ikke noget.
Skal jeg ændre samtlige sider og undersider på mit site til ISO-8859-1?! Det er næsten ikke til at magte. Eller er det nok bare at ændre default.php siden som includer alle de andre?

Hej Jesper.
Jeg har nu oprettet en blog hvori der står æ, ø, å det er også galt med fx á og é
du kan trykke på rss validate knappen neders i venstre hjørne af siden, så kan du se de fejl rss'en laver.

Håber i kan bruge det til at komme et skridt nærmere en løsning.

vh

KP



det er de her strenge der gør det
<title> <?=htmlentities(strip_tags($db['overskrift'])); ?></title>

det er dem der laver alt HTML halløjen
Problemet er hvis jeg fjerner htmlentities() så vil den ikke vallidere alle & tegnene du kan se rssén nu.




Tak for det Jesper! Super! Nu kører det! Karma er uddelt!
Snakkes.



Jo scootergrisen.
Følgende to linier er indeholdt i rxx.xml filen:

<?php header('Content-type: text/xml; charset=utf-8'); ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">



<?xml version="1.0" encoding="UTF-8" ?> og <?php header('Content-type: text/xml; charset=utf-8'); ?> er ligegyldig. I modsætning til HTML, så har XML en forudsigelig definition af hvad tegnkodning der skal bruges, hvis den ikke er defineret: Der skal altid bruges UTF-8.



Du har ikke angivet nogen encoding i din rss.xml fil.

Tilføj følgende aller øverst i rss.xml :

<?xml version="1.0" encoding="UTF-8" ?>




t