Problemas de Ñ y acentos en RSS

Iniciado por Lupin, 15 Septiembre 2011, 03:02 AM

0 Miembros y 3 Visitantes están viendo este tema.

Lupin

Gracias por tu respuesta...lo pruebo ahora mismo y lo comento !!!  ;D

Lupin

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

WHK

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

Lupin

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


yocarluis

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

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

WHK

Cita de: farell en 30 Septiembre 2011, 20:40 PM
Intenta utilizar un poco de php, hace tiempo implemente un Lector de RSS con una función que me proporciono Desarrolloweb.com.

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

Habría que tener demasiado cuidado porque eso tiene problemas de seguridad xss, si no filtras las etiquetas y alguien pone por ejemplo en un foro o blog un <script> entonces puedes hacerle bypass al sistema de seguridad nativo de tu sistema web.

La idea es buena pero demasiado inseguro, yo no lo usaría a menos que quiera que me roben las cuentas.

yocarluis

Cita de: WHK en 30 Septiembre 2011, 21:09 PM
Habría que tener demasiado cuidado porque eso tiene problemas de seguridad xss, si no filtras las etiquetas y alguien pone por ejemplo en un foro o blog un <script> entonces puedes hacerle bypass al sistema de seguridad nativo de tu sistema web.

La idea es buena pero demasiado inseguro, yo no lo usaría a menos que quiera que me roben las cuentas.

Es Cierto amigo, pero eso quedaría a criterio de el, yo sugiero que implemente la información que le proporcione, es mucho más efectivo que el método básico con HTML, luego quedaría realizar un sistema de seguridad, muy sencillo no es demasiado, cualquier cosa enviar un mensaje privado y ayudo sin problemas.

Carluís

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

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.
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:
<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
Desarrollo Web, Blogging, Diseño: http://onsoni.blogspot.com

Lupin

Lamento la ignorancia pero como puedo mostrar las salidas  con  esta funcion convertir_especiales_html() me refiero a mostrarlas en el navegador.

Yo antes las mostraba con
   html_entity_decode();
Y  metia a la DB con
   htmlspecialchars


Carluís

Cita de: Lupin en  3 Octubre 2011, 21:10 PM
Lamento la ignorancia pero como puedo mostrar las salidas  con  esta funcion convertir_especiales_html() me refiero a mostrarlas en el navegador.

Yo antes las mostraba con
   html_entity_decode();
Y  metia a la DB con
   htmlspecialchars



Amigo, facil, llama la función, un ejemplo sería el siguiente:

convertir_especiales_html('<title><![CDATA["Albert Einsteín"]]></title>');

Se mostraría de la siguiente manera:

<title><![CDATA["Albert Einste&amp;iacute;n"]]></title>

Te sugiero que me facilites más información acerca de tu falla estoy un poco desorientado, saludos.
Desarrollo Web, Blogging, Diseño: http://onsoni.blogspot.com