Problemas con palabras acentuadas en FEED

Iniciado por Diabliyo, 16 Abril 2010, 01:07 AM

0 Miembros y 1 Visitante están viendo este tema.

Diabliyo

Buen día.

Tengo un CMS en donde proporciono un archivo rss.php para que los usuarios tengan el servicio de feed, pero tengo problemas para con las palabras centuadas :(.

Les proporciono un enlace a FeedValidator donde intento validar un web que tengo y se puede ver el problema.

Enlace: http://feedvalidator.org/check.cgi?url=http%3a%2f%2fpodcast.sie-group.net%2frss.php.

Implemento una funcion simple para facilitar todo el proceso de mostrar texto al usuario, y tambien la utilizo para el Feed, la funcion se llama proteger_cadena() y dentro utilizo tres funciones que son: strip_tags, htmlentities y utf8_encode. Pero el problema continua :(

Saludos !

дٳŦ٭

amm  ya probaste con un str_replace y con los cdatas?


Con sangre andaluza :)


Diabliyo

Cita de: дٳŦ٭ en 18 Abril 2010, 01:32 AM
amm  ya probaste con un str_replace y con los cdatas?

No entiendo que quieres darme a entender :S...

Bueno en fin, los soluciones simplemente colocando un utf8 encode y listo... seria algo asi:

Ejm: asumiendo que el texto tiene palabras acentuadas, le pasamos esto:

Código (php) [Seleccionar]
utf8_encode( htmlentities($texto, ENT_QUOTES) );


Cuantico

No solamente acentuadas, todas de las del diccionario de utf-8...

Good..
:)

Nakp

Ojo por ojo, y el mundo acabará ciego.

WHK

#5
Observa la petición completa que pude capturar desde live headers:

http://podcast.sie-group.net/rss.php

GET /rss.php HTTP/1.1
Host: podcast.sie-group.net
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.5pre) Gecko/20100417 Ubuntu/9.10 (karmic) Namoroka/3.6.5pre
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive

HTTP/1.1 200 OK
Date: Fri, 23 Apr 2010 06:21:49 GMT
Server: Apache
Keep-Alive: timeout=15, max=97
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/xml


En ningún lado el servidor responde el tipo de codificación a utilizar.
Cuando utilizamos acentos y eñes debemos usar la codificación ISO-8859-1:

Código (php) [Seleccionar]
<?php header('Content-Type: text/xml; charset=ISO-8859-1'); ?>

Ahora ya podemos insertar acentos y el validador debería aceptarnos por standard, si no lo acepta es error del validador.

En el header del xml también debe ir declarado al igual que en el html:
Código (xml) [Seleccionar]
<?xml version="1.0" encoding=ISO-8859-1"?>

ya que tu rss tiene header de utf-8:
Código (xml) [Seleccionar]
<?xml version="1.0" encoding="UTF-8"?>

Recuerda que si le escribes un acento desde tu pc con codificación iso88591 sobre una web con utf8 aparecerán simbolos en ves de acentos y eñes, por ejemplo también puedes escribir © sin la necesidad de escribir  &copy;

vee el código fuente del foro y fijate que en el header del html dice:
Código (html4strict) [Seleccionar]
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

y en el header:
https://foro.elhacker.net/

GET / HTTP/1.1
Host: foro.elhacker.net
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.5pre) Gecko/20100417 Ubuntu/9.10 (karmic) Namoroka/3.6.5pre
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
If-Modified-Since: Fri, 23 Apr 2010 06:18:42 GMT


HTTP/1.1 200 OK
Date: Fri, 23 Apr 2010 06:30:57 GMT
Server: Apache
X-FRAME-OPTIONS: DENY
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: private
Pragma: no-cache
Last-Modified: Fri, 23 Apr 2010 06:30:57 GMT
Content-Encoding: gzip
Vary: Accept-Encoding
Keep-Alive: timeout=3, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=ISO-8859-1


te fijas?
Content-Type: text/html; charset=ISO-8859-1