elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 04:46  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP
| | | |-+  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 2,733 veces)
Lupin

Desconectado Desconectado

Mensajes: 120


¡Amo YaBB SE!


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

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.334

he vuelto :)


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

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
吴阿卡
Ex-Staff
*
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


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

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 por WHK » En línea

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
Lupin

Desconectado Desconectado

Mensajes: 120


¡Amo YaBB SE!


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

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
吴阿卡
Ex-Staff
*
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


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

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

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
Lupin

Desconectado Desconectado

Mensajes: 120


¡Amo YaBB SE!


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

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: 120


¡Amo YaBB SE!


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

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
吴阿卡
Ex-Staff
*
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


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

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

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
Lupin

Desconectado Desconectado

Mensajes: 120


¡Amo YaBB SE!


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

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
<?php 
$config = array();  
   $sql_link = mysql_connect("localhost", "root", "password") or die(mysql_error($sql_link));  
   mysql_select_db("adventures",$sql_link);  
   $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"   <title>".utf8_encode($site)."</title>"."\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");  
       $ano = substr($fecha, 0, 4);  
       $mes = substr($fecha, 5, 2);  
       $dia = substr($fecha, 8, 2);  
       $hora = substr($fecha, 11, 2);  
       $min = substr($fecha, 14, 2);  
       $seg = substr($fecha, 17, 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  
   $r = mysql_query($q, $sql_link);  
   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
 $id_de_historia =trim(substr($link_comic,0,3));
//Extrayendo id_capitulo  absuluto del $link_comic
 $id_de_capitulo =trim(substr($link_comic,3,3));
//Extrayendo id_pagina  absoluto del $link_comic
 $id_de_pagina  =trim(substr($link_comic,6,3));
 
//obteniendo id_capitulo  RELATIVO
$consulta = "Select * from capitulos where id_historia= '$id_de_historia';";
$sql= mysql_query($consulta);
   $contador=0;
while($rowcapt = mysql_fetch_assoc($sql))
{
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';"
;
 
$sql= mysql_query($consulta);
   $id_pagina_relativa=0;
while($rowpag = mysql_fetch_assoc($sql))
{
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
吴阿卡
Ex-Staff
*
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


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

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

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
Lupin

Desconectado Desconectado

Mensajes: 120


¡Amo YaBB SE!


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

Gracias por tu respuesta...lo pruebo ahora mismo y lo comento !!!  ;D
En línea
Lupin

Desconectado Desconectado

Mensajes: 120


¡Amo YaBB SE!


Ver Perfil
Re: Problemas de Ñ y acentos en RSS
« Respuesta #11 en: 26 Septiembre 2011, 18:40 »

No he podido convertir mi BD a latin1_swedish_ci estoy usando mysql 5.0.67 !!!! Unknow collation

CREATE DATABASE  adventures DEFAULT CHARACTER SET utf8 COLLATE  latin1_swedish_ci ;

Estoy creando  la base de datos de nuevo..
En línea
WHK
吴阿卡
Ex-Staff
*
Desconectado Desconectado

Mensajes: 4.113


The Hacktivism is not a crime


Ver Perfil WWW
Re: Problemas de Ñ y acentos en RSS
« Respuesta #12 en: 26 Septiembre 2011, 19:42 »

intenta dejarla como utf8 pero eso si que en el header del php y del html debe ir la codificación si o si.
En línea

Mi foro Ultra Off-Topics: http://whk.drawcoders.com/foro/

Gracias a todos! Good bye!
Lupin

Desconectado Desconectado

Mensajes: 120


¡Amo YaBB SE!


Ver Perfil
Re: Problemas de Ñ y acentos en RSS
« Respuesta #13 en: 27 Septiembre 2011, 00:46 »

Biennn !!!!
Gracias WHK !!!!
Parecia imposible y la verdad no hay mucha info para aclarar estas cosas..
hice todo lo que dijiste y deje la base de datos como la tenia antes
y para proteger los datos use solo htmlspecialchars($texto, ENT_QUOTES) como mencionaste
Cambie la codificacion de la pagina que me muestra los datos de RSS ( incluso de otras paginas ) modificando el charset  ó en dreamweber propiedades de pagina/tilulo codificacion/ codificacion=Europeo occidental (yo la tenia en unicode UTF-8).
He revisado mi base de datos para mirar como guarda los datos y me he fijado que no usa entidades especiales si no caracteres extraños,esa seria mi unica duda...Pero lo importante es que me interpreta caracteres como por ejemplo en nombre en arabe de Shakira (شاكرة šākira) !!!!. Es más la data ocupa menos longitud al no usar entidades.  Gracias amigo ahora voy a cambiar todas mis paginas

 
En línea
yocarluis

Desconectado Desconectado

Mensajes: 2


Ver Perfil WWW
Re: Problemas de Ñ y acentos en RSS
« Respuesta #14 en: 30 Septiembre 2011, 20:40 »

Intenta utilizar un poco de php, hace tiempo implemente un Lector de RSS con una función que me proporciono Desarrolloweb.com.

Código:
function convertir_especiales_html($str){
   if (!isset($GLOBALS["carateres_latinos"])){
      $todas = get_html_translation_table(HTML_ENTITIES, ENT_NOQUOTES);
      $etiquetas = get_html_translation_table(HTML_SPECIALCHARS, ENT_NOQUOTES);
      $GLOBALS["carateres_latinos"] = array_diff($todas, $etiquetas);
   }
   $str = strtr($str, $GLOBALS["carateres_latinos"]);
   return $str;
}

Ahora intenta llamar a la función de esta forma.
Código:
convertir_especiales_html('<p align="center">La ejecución de esta función sirve para <b>convertir caracteres especiales con PHP</b> sin tocar las etiquetas. <br>Parece que funcionó!</p>');

Devolveria un texto como el siguiente:
Código:
<p align="center">La ejecuci&oacute;n de esta funci&oacute;n sirve para <b>convertir caracteres especiales con PHP</b> sin tocar las etiquetas. <br>Parece que funcion&oacute;!</p>

Espero averte ayudado, saludos.

Más información
En línea
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problemas con acentos en ASP
Desarrollo Web
skl 2 829 Último mensaje 4 Julio 2005, 06:00
por Morris
acentos.
Desarrollo Web
darksteel- 8 693 Último mensaje 27 Diciembre 2005, 18:31
por Colymore
problemas con acentos en todos mis programas...
Dudas Generales
maxwellnewage 3 464 Último mensaje 15 Noviembre 2007, 02:16
por maxwellnewage
problemas con la ñ y acentos al pasaruna variable por la url
.NET
jorgexl30 8 5,361 Último mensaje 26 Octubre 2009, 14:08
por jorgexl30
problemas con eñes y acentos
Hacking Básico
chewwe 6 2,189 Último mensaje 5 Enero 2011, 22:57
por m3m089
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines