elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Problemas de Ñ y acentos en RSS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Problemas de Ñ y acentos en RSS  (Leído 14,330 veces)
Lupin

Desconectado Desconectado

Mensajes: 153



Ver Perfil
Problemas de Ñ y acentos en RSS
« en: 15 Septiembre 2011, 03:02 am »

Estaba realizando un feed RSS
y la verdad mis datos de mi base de datos estan asi por ejemplo:
Datos reales
Citar
"Albert Einsteín"
Datos que deben mostrar
Citar
"Albert Einsteín"
Y la verdad en la parte del RSS
Citar
<title><![CDATA["Albert Einste&amp;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_decode
La 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 Desconectado

Mensajes: 6.336

he vuelto :)


Ver Perfil WWW
Re: Problemas de Ñ y acentos en RSS
« Respuesta #1 en: 15 Septiembre 2011, 03:11 am »

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Problemas de Ñ y acentos en RSS
« Respuesta #2 en: 15 Septiembre 2011, 03:38 am »

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:

Citar
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
   <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Responder al mensaje</title>
        <link rel="stylesheet" type="text/css" href="https://foro.elhacker.net/Themes/converted/css/style.css">

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 Desconectado

Mensajes: 153



Ver Perfil
Re: Problemas de Ñ y acentos en RSS
« Respuesta #3 en: 15 Septiembre 2011, 03:41 am »

Bueno la verdad le he aplicado hml_entity_decode a los datos algo asi por ejemplo
Citar
<title><![CDATA[html_entity_decode("Albert Einste&amp;iacute;n")]]></title>\n";
pero ne ha funcionado
Estoy usando esta codificacion:
Citar
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
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Problemas de Ñ y acentos en RSS
« Respuesta #4 en: 15 Septiembre 2011, 03:44 am »

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 Desconectado

Mensajes: 153



Ver Perfil
Re: Problemas de Ñ y acentos en RSS
« Respuesta #5 en: 15 Septiembre 2011, 03:51 am »

Bueno si  ;D
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
Citar
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
   <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Responder al mensaje</title>
        <link rel="stylesheet" type="text/css" href="https://foro.elhacker.net/Themes/converted/css/style.css">
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 Desconectado

Mensajes: 153



Ver Perfil
Re: Problemas de Ñ y acentos en RSS
« Respuesta #6 en: 21 Septiembre 2011, 22:10 pm »

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Problemas de Ñ y acentos en RSS
« Respuesta #7 en: 22 Septiembre 2011, 12:14 pm »

dame la url de la web para darle un vistazo
En línea

Lupin

Desconectado Desconectado

Mensajes: 153



Ver Perfil
Re: Problemas de Ñ y acentos en RSS
« Respuesta #8 en: 22 Septiembre 2011, 22:09 pm »

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
Código:
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
Código
  1. <?php
  2. $config = array();  
  3.    $sql_link = mysql_connect("localhost", "root", "password") or die(mysql_error($sql_link));  
  4.    mysql_select_db("adventures",$sql_link);  
  5.    $urlmain = "http://mi-web.com/";  
  6.    $site = "Mi WebSite";  
  7.    header('Content-Type: text/xml');  
  8.    echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";  
  9.    echo '<rss version="2.0" '."\n";  
  10.    echo '     xmlns:content="http://purl.org/rss/1.0/modules/content/"'."\n";  
  11.    echo '     xmlns:wfw="http://wellformedweb.org/CommentAPI/"'."\n";  
  12.    echo '     xmlns:dc="http://purl.org/dc/elements/1.1/"'."\n";  
  13.    echo ' >'. "\n";  
  14.    echo '<channel>'."\n";  
  15.    echo"   <title>".utf8_encode($site)."</title>"."\n";  
  16.    echo"   <link>".$urlmain."rss/rss.php?id=x</link>"."\n";  
  17.    echo"   <image><title>".utf8_encode($site)."</title><link>".$urlmain."</link><url>".$urlmain."images/logo.jpg</url></image>\n";  
  18.    echo"   <description>".utf8_encode(" Very Good")."</description>"."\n";  
  19.    $fecha = date("Y-m-d h:i:s");  
  20.        $ano = substr($fecha, 0, 4);  
  21.        $mes = substr($fecha, 5, 2);  
  22.        $dia = substr($fecha, 8, 2);  
  23.        $hora = substr($fecha, 11, 2);  
  24.        $min = substr($fecha, 14, 2);  
  25.        $seg = substr($fecha, 17, 2);  
  26.        $pubdate0 = date('D, d M Y H:i:s O', mktime($hora, $min, $seg, $mes, $dia, $ano));  
  27.    echo"   <pubDate>$pubdate0</pubDate>"."\n";  
  28.    echo"   <generator>$urlmain</generator>"."\n";  
  29.    echo'   <language>en-us</language>'."\n\n";  
  30.    $q = "SELECT * FROM articulos order by id_articulo desc limit 14"; // el limite varía dependiendo de las necesidades  
  31.    $r = mysql_query($q, $sql_link);  
  32.    while($row = mysql_fetch_array($r)){ // bucle para volcar los datos de la base de datos mysql  
  33. // esto es para obtener el link
  34.  
  35. $link_comic = $row['link'] ;
  36. //print "jeje ".$link_comic ;
  37. //Extrayendo id_historia del $link_comic
  38.  $id_de_historia =trim(substr($link_comic,0,3));
  39. //Extrayendo id_capitulo  absuluto del $link_comic
  40.  $id_de_capitulo =trim(substr($link_comic,3,3));
  41. //Extrayendo id_pagina  absoluto del $link_comic
  42.  $id_de_pagina  =trim(substr($link_comic,6,3));
  43.  
  44. //obteniendo id_capitulo  RELATIVO
  45. $consulta = "Select * from capitulos where id_historia= '$id_de_historia';";
  46. $sql= mysql_query($consulta);
  47.    $contador=0;
  48. while($rowcapt = mysql_fetch_assoc($sql))
  49. {
  50. if(!($rowcapt['id_capitulo']==$id_de_capitulo))
  51. {
  52. $contador++;
  53. }else{
  54. $contador++;
  55. break ;
  56.    }
  57.  
  58. }
  59.  
  60. //print "Eso corresponde a: ".$contador;
  61.  
  62.  
  63. //obteniendo id_pagina  RELATIVO
  64. $consulta =
  65. "Select * from paginas where id_historia= '$id_de_historia' and id_capitulo=
  66. '$id_de_capitulo';";
  67.  
  68. $sql= mysql_query($consulta);
  69.    $id_pagina_relativa=0;
  70. while($rowpag = mysql_fetch_assoc($sql))
  71. {
  72. if(!($rowpag['id_pagina']==$id_de_pagina))
  73. {
  74. $id_pagina_relativa++;
  75. }else{
  76. $id_pagina_relativa++;
  77. break ;
  78.    }
  79.  
  80. }
  81. //print "<br>Eso corresponde a la pagina : ".$id_pagina_relativa;
  82.  
  83.  
  84. //**************fin de obtener el link
  85.  
  86.  
  87.        $ano = substr($row[fecha], 0, 4);  
  88.        $mes = substr($row[fecha], 5, 2);  
  89.        $dia = substr($row[fecha], 8, 2);  
  90.        $hora = substr($row[fecha], 11, 2);  
  91.        $min = substr($row[fecha], 14, 2);  
  92.        $seg = substr($row[fecha], 17, 2);  
  93.        $pubdate = date('D, d M Y H:i:s O', mktime($hora, $min, $seg, $mes, $dia, $ano));  
  94.            echo "  <item>\n";  
  95.            echo "      <title>".utf8_decode($row[titulo])."</title>\n";  
  96.            echo "      <link>".$urlmain."page_web.php?id="."http://mi-web.com"."</link>\n";  
  97.            echo "      <comments>".$urlmain."page_web.php?id=".$row[encabezado]."</comments>\n";  
  98.            echo "      <pubDate>$pubdate</pubDate>\n";  
  99.            echo "      <dc:creator>".$row[campo4]."</dc:creator>\n";  
  100.            echo "      <category>"."Comic"."</category>\n";  
  101.            echo "      <guid>".$urlmain."page_web.php?id=".$row[campo6]."</guid>\n";  
  102.            echo '      <description><![CDATA[';  
  103.            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  
  104.            echo "<p>".utf8_encode($row[encabezado])."</p>";                        //incluir contenido de la base de datos  
  105.            echo "<p>".utf8_encode("")."</p>";                   //incluir contenido directo  
  106.            echo "]]></description>\n";  
  107.            echo "      <wfw:commentRss>".$urlmain."</wfw:commentRss>"."\n";  
  108.            echo "  </item>\n";  
  109.    }  
  110.    echo "</channel>\n</rss>\n";
  111.  
  112.    ?>  
  113.  
  114.  
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
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Problemas de Ñ y acentos en RSS
« Respuesta #9 en: 24 Septiembre 2011, 01:12 am »

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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

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,471 Último mensaje 26 Octubre 2009, 14:08 pm
por jorgexl30
problemas con eñes y acentos
Hacking
chewwe 6 6,281 Último mensaje 5 Enero 2011, 22:57 pm
por m3m089
problemas con acentos codificacion(solucionado)
Desarrollo Web
basickdagger 7 4,401 Último mensaje 17 Octubre 2013, 23:02 pm
por basickdagger
Problemas con los acentos y cambios de letras
Windows
Karkass 2 2,171 Último mensaje 28 Marzo 2014, 11:00 am
por Karkass
Problemas con acentos en includes.
PHP
#Aitor 0 2,052 Último mensaje 12 Marzo 2017, 19:00 pm
por #Aitor
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines