Foros del Web » Programando para Internet » PHP »

Tildes en una cadena

Estas en el tema de Tildes en una cadena en el foro de PHP en Foros del Web. Hola a todos, Tengo la siguiente cadena: Código: $cadena ="Acci�n social en Latinoam�rica"; ¿Qué puedo hacer para que las tildes salgan correctamente? Tener en cuenta ...
  #1 (permalink)  
Antiguo 16/06/2009, 08:50
 
Fecha de Ingreso: febrero-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Tildes en una cadena

Hola a todos,

Tengo la siguiente cadena:

Código:
$cadena ="Acci�n social en Latinoam�rica";
¿Qué puedo hacer para que las tildes salgan correctamente?
Tener en cuenta que no puedo tocar el origen de la cadena, viene de un sistema cerrado.

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 16/06/2009, 08:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Tildes en una cadena

Como que no puedas tocar el origen de la cadena? Es una base de datos? Te aseguraste que este bien escrito en la base de datos o en el sistema que estas leyendo la información. O sea que no se hayan almacenado de esa forma. Mientras tanto lee este documento te va a ayudar mucho http://www.stan.com.mx/topics/view/12
  #3 (permalink)  
Antiguo 16/06/2009, 09:04
 
Fecha de Ingreso: febrero-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Tildes en una cadena

abimaelrc, gracias pero no es una base de datos es una cadena que sale de un webservice.
Gracias de nuevo
  #4 (permalink)  
Antiguo 16/06/2009, 09:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Tildes en una cadena

Por eso te digo que si la cadena que recibes ya viene con los caracteres asi o es cuando tu lo posteas que salen así
  #5 (permalink)  
Antiguo 16/06/2009, 09:11
 
Fecha de Ingreso: febrero-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Tildes en una cadena

Viene con los caracteres así
  #6 (permalink)  
Antiguo 16/06/2009, 09:12
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Tildes en una cadena

Pues vas a tener que hablar con la persona que te envia la información, para que haga el arreglo pertinente y pueda enviarte la información correcta con sus caracteres.
  #7 (permalink)  
Antiguo 16/06/2009, 09:17
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: Tildes en una cadena

htmlentities() es lo que buscas, pasa tu cadena por esta función y comprueba el resultado
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter
  #8 (permalink)  
Antiguo 16/06/2009, 09:18
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Tildes en una cadena

pero htmlentities() puede arreglar caracteres que ya vienen de esta forma Acci�n social en Latinoam�rica?
  #9 (permalink)  
Antiguo 16/06/2009, 09:26
 
Fecha de Ingreso: febrero-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Tildes en una cadena

jaao_death gracias, tras pasalo por htmlentities() que esto:
Acci?n social en Latinoam?rica
  #10 (permalink)  
Antiguo 16/06/2009, 09:28
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Tildes en una cadena

Como indique si los caracteres vienen ya declarados de esta forma, es que el codigo que corrio primero, los convirtio a caracteres que no se reconocen y te va a salir con el simbolo de ?
  #11 (permalink)  
Antiguo 16/06/2009, 09:41
 
Fecha de Ingreso: febrero-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Tildes en una cadena

Lo siento, no entiendo, este es el php donde estoy haciendo los tests.
Me olvido por un momento del webservice y copio tal cual lo que viene de él y lo meto en la variable $cadena:

Código:
<?php

$cadena ="Acci�n social en Latinoam�rica";

$fin = htmlentities($cadena, ENT_QUOTES);

echo $fin;

?>
El output de esto es:
Acci?n social en Latinoam?rica
  #12 (permalink)  
Antiguo 16/06/2009, 09:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Tildes en una cadena

Como ya esta convertido a � el htmlentities te va a decir ? porque no sabe que letra es. Ahora si fuera que te llega correcto o sea

Acción social en Latinoamérica y te sale en el html con esos simbolos ahi tu puedes usar el

htmlentities() para que en el html aparezca Acción social en Latinoamérica pero en el codigo fuente va a salir

Acci&oacute;n social en Latinoam&eacute;rica
  #13 (permalink)  
Antiguo 16/06/2009, 09:53
 
Fecha de Ingreso: febrero-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Tildes en una cadena

gracias abimaelrc, ahora si lo entiendo. Así que no hay solución desde mi lado?
  #14 (permalink)  
Antiguo 16/06/2009, 09:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Tildes en una cadena

Revisa con qué codificación de caracteres recibes.

Si la recibes con codificación UTF-8, por ejemplo, puedes usar utf8_decode() para solucionar el problema.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #15 (permalink)  
Antiguo 16/06/2009, 10:38
 
Fecha de Ingreso: febrero-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Tildes en una cadena

David, gracias, pero:
Acci?n social en Latinoam?rica

Última edición por Lleoun; 16/06/2009 a las 10:45
  #16 (permalink)  
Antiguo 16/06/2009, 10:44
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Tildes en una cadena

Revisa con qué codificación recibes los datos, con qué codificación está guardado tu archivo PHP y con qué codificación estás sirviendo esos datos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #17 (permalink)  
Antiguo 16/06/2009, 10:57
 
Fecha de Ingreso: febrero-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Tildes en una cadena

La cadena viene de un webservice que no tiene codificación aparentemente (no puedo acceder el webservice pero estoy mirando su codigo fuente desde el navegador). Sin embargo dentro del webservice si se ven las tildes .. por eso es que me empeño en que tiene que salir en mi php.

La cadena en realidad es un array, ahi es donde se almacena la información con tildes, luego le hago un print_r y es aquí donde aparecen los caracteres extraños... ¿cómo puedo hacer para que salgan bien?
  #18 (permalink)  
Antiguo 16/06/2009, 11:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Tildes en una cadena

Sí o sí debe tener una codificación de caracteres. El navegador te puede dar esa información (con qué codificación se está sirviendo el archivo). Lo que está pasando es que esa codificación no está coincidiendo con la codificación con la que sirves tu página.

http://es.wikipedia.org/wiki/Codific..._de_caracteres
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #19 (permalink)  
Antiguo 16/06/2009, 11:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Tildes en una cadena

podrias escribir parte de la cadena de array? ahora si se puede trabajar con eso
  #20 (permalink)  
Antiguo 16/06/2009, 11:04
 
Fecha de Ingreso: febrero-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Tildes en una cadena

ok el webservice tiene: Content-Type: text/xml; charset=utf-8
  #21 (permalink)  
Antiguo 16/06/2009, 11:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Tildes en una cadena

Estas tratando de pasarlo a traves de ajax?
  #22 (permalink)  
Antiguo 16/06/2009, 11:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Tildes en una cadena

Trata a ver si te funciona esto

Código PHP:
$acentosSearch = array('á','Á','é','É','í','Í','ó','Ó','ú','Ú','ü','ñ','Ñ','¿','¡');
$acentosReplaces = array('&aacute;','&Aacute;','&eacute;','&Eacute;','&iacute;','&Iacute;','&oacute;','&Oacute;','&uacute;','&Uacute;','&uuml;','&ntilde;','&Ntilde;','&iquest;','&iexcl;');
echo 
"<b>".str_ireplace($acentosSearch,$acentosReplaces,$verificar_xml)."</b><br />"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:35.