Avatar billede foxladi Nybegynder
05. marts 2006 - 13:37 Der er 6 kommentarer

UTF-8 problemer i rss-feed

Hej

Jeg har et php-script, der danner et rss-feed.

I det script benytter jeg følgende kode for at omdanne danske og franske specialtegn til utf-8:

$title = $_REQUEST['title'];
$title = utf8_encode($title);
$summary = $_REQUEST['summary'];
$summary = utf8_encode($summary);
$url = $_REQUEST['url'];
$length = $_REQUEST['length'];
$keywords = $_REQUEST['keywords'];
$keywords = utf8_encode($keywords);
$length = $_REQUEST['length'];
$explicit = $_REQUEST['explicit'];

(I øvrigt fungerer det ikke i keywords ...)

Rss-feedet, der kommer ud af det, validerer, bortset fra et nyt feed, hvor "à" ikke er utf-8 af en eller anden grund.

Herefter "brænder" vi feedet med feedburner, og der går det galt. I stedet for specialtegnene, ses nu de lidt underlige utf-8 koder.

Fx Vous êtes psy-quoi?
i stedet for
Vous êtes psy-quoi?

Her er det originale rss-feed:

http://www.malka.fr/podcasts/podcast.rss

Og feedburners:

http://feeds.feedburner.com/psychocasting

I feedburner står instillingerne til at bevare den oprindelige type osv. rss-feed. Og deres feed er også utf-8.

Spørgsmålet er: Benytter jeg en forkert php-kode for at omdanne danske og franske specialtegn til utf-8?

Håber, at nogen kan hjælpe :-)

--
Mange hilsner
Britt Malka
Avatar billede coderdk Praktikant
05. marts 2006 - 16:39 #1
Bare en tanke, men har du prøvet at køre det igennem htmlentities også? Eller htmlentities i stedet for utf8_encode, muligvis...
Avatar billede foxladi Nybegynder
05. marts 2006 - 17:32 #2
Lavede lige en lille test i en anden fil, og der forsvandt de franske tegn helt, når jeg både brugte htmlentities og utf-8. Har tidligere prøvet med kun htmlentities, og det virkede ikke.
Avatar billede coderdk Praktikant
05. marts 2006 - 17:36 #3
Hmm check om du har multi-byte extension... Hvis du har, så prøv med http://dk.php.net/mb_convert_encoding
Enten med

$text = mb_convert_encoding($text, "HTML-ENTITIES", "UTF-8" );

eller

$text = mb_convert_encoding( $text, "UTF-8", "auto" );
Avatar billede coderdk Praktikant
05. marts 2006 - 17:38 #4
Eller skulle det være

$text = mb_convert_encoding($text, "HTML-ENTITIES", "ISO-8859-1" );

eller måske

$text = mb_convert_encoding( mb_convert_encoding($text, "HTML-ENTITIES", "ISO-8859-1" ), "UTF-8", "ISO-8859-1" );

Jeg tænker ikke klart lige nu ;P
Avatar billede foxladi Nybegynder
06. marts 2006 - 00:31 #5
Hvor tjekker jeg, om jeg har multi-byte extension?
Avatar billede coderdk Praktikant
06. marts 2006 - 00:37 #6
Den vil brokke sig over at mb_convert_encoding ikke findes ;) Men du kan også se hvad phpinfo() siger
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester