Autor
|
Tema: Problemas de Ñ y acentos en RSS (Leído 15,081 veces)
|
Lupin
Desconectado
Mensajes: 153
|
Estaba realizando un feed RSS y la verdad mis datos de mi base de datos estan asi por ejemplo: Datos reales"Albert Einste&iacute;n" Datos que deben mostrar"Albert Einsteín" Y la verdad en la parte del RSS<title><![CDATA["Albert Einste&iacute;n"]]></title>\n"; No me arrojan los acentos ni las Ñ.. que por cierto si lo hace en una pagina normal decodificando con html_entity_decodeLa verdad no entiendo porque el RSS o XML no lo interpreta. Estoy usando encoding="UTF-8"He usado todas las funciones posibles htmlentities , utf8_decode , utf8_encode pero no pasa nada...incluso he sacado la etiqueta <![CDATA
y en el mejor de los casos la etiqueta <description> si me interpreta las ñ y los acentos sin poner ninguna funcion pero el <title> no lo hace !!! Llevo dias en esto...
|
|
|
En línea
|
|
|
|
Nakp
casi es
Ex-Staff
Desconectado
Mensajes: 6.336
he vuelto :)
|
tendrás que usar html_entity_decode en tus datos para quitar las entities, y si es necesario, codificarlo en el charset que se supone que usa el feed
|
|
|
En línea
|
Ojo por ojo, y el mundo acabará ciego.
|
|
|
WHK
|
Para eso existe la codificación iso-8859-1 Wordpress lo sabe y todos los archivos de la traducción en español incluyendo base de datos utiliza esta codificación. De hecho simplemachines y joomla también utilizan esta codificación para traducciones en español. Haz la prueba y vee el código fuente de este foro: No porque utf8 sea mas extenso va a querer decir que es mas flexible. Por lo contrario causa problemas de seguridad ya que vas a tener problemas al guardar datos desde cajas de texto o mostrar datos desde la base de datos y vas a estar obligado a manipular siempre htmlentities impidiendo que la gente use el buscador con acentos y cosas por el estilo. En mi caso desde el core de un sistema declaro que el título del sitio web se llamará "Última prueba", si, si... con acento en la primera U, pero la función que lo va a mostrar en pantalla va a utilizar htmlspecialchars para evitar XSS si es que alguien se le ocurre poner desde la base de datos alguna inyección de código, pero el problema es que si trabajo en utf8 tendré que estar utilizando constantemente utf8 encode desde php para guardar los datos en la db ya que si los paso a htmlentities entonces voy a tener doble filtro y en ves de verse un acento solo se va a ver carácteres basura. Por eso siempre utilizo en sistemas latinos la codificación iso, para evitar algunos problemas de seguridad y guardar los datos en la db lo mas fiel posible.
|
|
« Última modificación: 15 Septiembre 2011, 03:43 am por WHK »
|
En línea
|
|
|
|
Lupin
Desconectado
Mensajes: 153
|
Bueno la verdad le he aplicado hml_entity_decode a los datos algo asi por ejemplo <title><![CDATA[html_entity_decode("Albert Einste&iacute;n")]]></title>\n"; pero ne ha funcionado Estoy usando esta codificacion: header('Content-Type: text/xml'); echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; echo '<rss version="2.0" '."\n"; Bueno con respecto al charset...he visto codigos donde embeben la codificacion RSS dentro del html (<html><head></head><boby></body>...) pero no los he llegado ha hacer funcionar pues le quitan el formato al RSS..pero pensandolo bien puede que le problema vaya por alli...
|
|
|
En línea
|
|
|
|
WHK
|
ojala que donde dice albert einstein no sea algo dinamico porque es vulnerable a xss.
Ves lo que decia? al usar utf8 vas a tener que codificar, recodificar, decodificar, etc.
|
|
|
En línea
|
|
|
|
Lupin
Desconectado
Mensajes: 153
|
Bueno si Pero en mi base de datos pretendo guardar caracteres unicode para caracteres extraños (nombres hebreos) y el UTF-8 lo vi como buena alternativa...aunque me has hecho dudar !! XD He estado intentando embeber el feed dentro pero como repito pierde el formato y temo que no se abien interpretado ¿tienes algun ejemplo ,WHK? Gracias por las molestias
|
|
|
En línea
|
|
|
|
Lupin
Desconectado
Mensajes: 153
|
Bueno hasta ahora he logrado que se interpreten las ñ y acentos en la etiqueta <description> pero lo hice eliminando <![CDATA['...']]> que es para introcir html dentro del formato; con respecto al titulo aun eliminanado <![CDATA['...']]> las ñ no se interpretan...vaya problema !!!!
|
|
|
En línea
|
|
|
|
WHK
|
dame la url de la web para darle un vistazo
|
|
|
En línea
|
|
|
|
Lupin
Desconectado
Mensajes: 153
|
Bueno la verdad lo estoy probando a nivel localm pero aqui esta mi code..y con esto Arme mi BD en mysql para aceptar caracteres extraños CREATE DATABASE adventures DEFAULT CHARACTER SET utf8 COLLATE ...utf8_spanish2_ci;
, la verdad todo va bien al presentarlo en html lo decodifico con html_entity_decode y para proteger los datos ingresar los datos utilizo htmlentities ($texto ,ENT_QUOTES,'UTF-8'); htmlspecialchars ($texto ,ENT_QUOTES,'UTF-8')
El code de mi RSS es <?php $urlmain = "http://mi-web.com/"; $site = "Mi WebSite"; header('Content-Type: text/xml'); echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; echo '<rss version="2.0" '."\n"; echo ' xmlns:content="http://purl.org/rss/1.0/modules/content/"'."\n"; echo ' xmlns:wfw="http://wellformedweb.org/CommentAPI/"'."\n"; echo ' xmlns:dc="http://purl.org/dc/elements/1.1/"'."\n"; echo ' >'. "\n"; echo '<channel>'."\n"; echo" <link>".$urlmain."rss/rss.php?id=x</link>"."\n"; echo" <image><title>".utf8_encode($site)."</title><link>".$urlmain."</link><url>".$urlmain."images/logo.jpg</url></image>\n"; echo" <description>".utf8_encode(" Very Good")."</description>"."\n"; $fecha = date("Y-m-d h:i:s"); $hora = substr($fecha, 11, 2); $pubdate0 = date('D, d M Y H:i:s O', mktime($hora, $min, $seg, $mes, $dia, $ano)); echo" <pubDate>$pubdate0</pubDate>"."\n"; echo" <generator>$urlmain</generator>"."\n"; echo' <language>en-us</language>'."\n\n"; $q = "SELECT * FROM articulos order by id_articulo desc limit 14"; // el limite varía dependiendo de las necesidades while($row = mysql_fetch_array($r)){ // bucle para volcar los datos de la base de datos mysql // esto es para obtener el link $link_comic = $row['link'] ; //print "jeje ".$link_comic ; //Extrayendo id_historia del $link_comic //Extrayendo id_capitulo absuluto del $link_comic //Extrayendo id_pagina absoluto del $link_comic //obteniendo id_capitulo RELATIVO $consulta = "Select * from capitulos where id_historia= '$id_de_historia';"; $contador=0; { if(!($rowcapt['id_capitulo']==$id_de_capitulo)) { $contador++; }else{ $contador++; break ; } } //print "Eso corresponde a: ".$contador; //obteniendo id_pagina RELATIVO $consulta = "Select * from paginas where id_historia= '$id_de_historia' and id_capitulo= '$id_de_capitulo';"; $id_pagina_relativa=0; { if(!($rowpag['id_pagina']==$id_de_pagina)) { $id_pagina_relativa++; }else{ $id_pagina_relativa++; break ; } } //print "<br>Eso corresponde a la pagina : ".$id_pagina_relativa; //**************fin de obtener el link $ano = substr($row[fecha ], 0, 4); $mes = substr($row[fecha ], 5, 2); $dia = substr($row[fecha ], 8, 2); $hora = substr($row[fecha ], 11, 2); $min = substr($row[fecha ], 14, 2); $seg = substr($row[fecha ], 17, 2); $pubdate = date('D, d M Y H:i:s O', mktime($hora, $min, $seg, $mes, $dia, $ano)); echo " <item>\n"; echo " <title>".utf8_decode($row[titulo ])."</title>\n"; echo " <link>".$urlmain."page_web.php?id="."http://mi-web.com"."</link>\n"; echo " <comments>".$urlmain."page_web.php?id=".$row[encabezado]."</comments>\n"; echo " <pubDate>$pubdate</pubDate>\n"; echo " <dc:creator>".$row[campo4]."</dc:creator>\n"; echo " <category>"."Comic"."</category>\n"; echo " <guid>".$urlmain."page_web.php?id=".$row[campo6]."</guid>\n"; echo ' <description><![CDATA['; echo '<p><a href="'.$urlmain.'comic.php?hist='.$id_de_historia.'&capt='.$id_de_capitulo."&accion=s&id_pagina=".$id_de_pagina."&pag=".$id_pagina_relativa.'#ancla"><img src="'.$urlmain."images/articulos/miniaturas/".substr("000".$row[id_articulo ], -3).'.jpg" border="0"/></a></p>'; //inclir imagenes en el contenido echo "<p>".utf8_encode($row[encabezado ])."</p>"; //incluir contenido de la base de datos echo "<p>".utf8_encode("")."</p>"; //incluir contenido directo echo "]]></description>\n"; echo " <wfw:commentRss>".$urlmain."</wfw:commentRss>"."\n"; echo " </item>\n"; } echo "</channel>\n</rss>\n"; ?>
El code lo encontre en una pagina web, debe haber mejores seguro pero este me iba bien salvo por el problema de las benditas Ñ y acentos!!!... P.D.: Lamento el desorden del codigo XD !!!
|
|
|
En línea
|
|
|
|
WHK
|
Sacales los utf8-encode y decode, eliminalos, cambia la cabecera donde dice <?xml version="1.0" encoding="UTF-8"?> ponle: <?xml version="1.0" encoding="ISO-8859-1"?>
La base de datos cambiala de utf8_spanish2_ci a latin1_swedish_ci e ingresa los datos nuevamente, no uses los datos antiguos porque ya están codificados en utf8.
No uses htmlentities ($texto ,ENT_QUOTES,'UTF-8'); Usa solamente htmlspecialchars($texto, ENT_QUOTES), no pongas la codificación al final.
Cuando hagas el archivo .php fijate que no esté en utf8, si usas notepad++ dale en la opción de formato > convertir en ANSI.
Te recomiendo utilizar en gedit para windows para corregir archivos basados en otras codificaciones, le das en guardar como y le pones que será ansi y saltos de linea de windows.
Cambia header('Content-Type: text/xml'); por: header('Content-Type: text/xml; charset=ISO-8859-1');
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
problemas con la ñ y acentos al pasaruna variable por la url
.NET (C#, VB.NET, ASP)
|
jorgexl30
|
8
|
15,948
|
26 Octubre 2009, 14:08 pm
por jorgexl30
|
|
|
problemas con eñes y acentos
Hacking
|
chewwe
|
6
|
6,583
|
5 Enero 2011, 22:57 pm
por m3m089
|
|
|
problemas con acentos codificacion(solucionado)
Desarrollo Web
|
basickdagger
|
7
|
4,735
|
17 Octubre 2013, 23:02 pm
por basickdagger
|
|
|
Problemas con los acentos y cambios de letras
Windows
|
Karkass
|
2
|
2,352
|
28 Marzo 2014, 11:00 am
por Karkass
|
|
|
Problemas con acentos en includes.
PHP
|
#Aitor
|
0
|
2,188
|
12 Marzo 2017, 19:00 pm
por #Aitor
|
|