Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problemas con la ñ

Estas en el tema de Problemas con la ñ en el foro de Programación General en Foros del Web. Buenas He visto por ahi varios post en los que la gente pregunta sobre problemas que tiene al intentar mostrar la ñ desde un archivo ...
  #1 (permalink)  
Antiguo 16/04/2008, 12:09
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 5 meses
Puntos: 1
Problemas con la ñ

Buenas

He visto por ahi varios post en los que la gente pregunta sobre problemas que tiene al intentar mostrar la ñ desde un archivo xml, y a lo que se responde con que la solucion es guardar el archivo xml codificado en utf-8.

Mi problema es que yo no guardo el archivo, sino que, tal como se crea se muestra por pantalla. De hecho, el codigo que uso es copiado desde la pagina de Google Maps (http://code.google.com/support/bin/answer.py?answer=65622 ), y es el siguiente:

Código PHP:
<?php
require("phpsqlajax_dbinfo.php");

function 
parseToXML($htmlStr

$xmlStr=str_replace('<','&lt;',$htmlStr); 
$xmlStr=str_replace('>','&gt;',$xmlStr); 
$xmlStr=str_replace('"','&quot;',$xmlStr); 
$xmlStr=str_replace("'",''',$xmlStr); 
$xmlStr=str_replace("&",'
&amp;',$xmlStr); 
return $xmlStr; 


// Opens a connection to a MySQL server
$connection=mysql_connect (localhost, $username, $password);
if (!$connection) {
  die('
Not connected ' . mysql_error());
}

// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
  die ('
Can't use db : ' mysql_error());
}

// Select all the rows in the markers table
$query "SELECT * FROM markers WHERE 1";
$result mysql_query($query);
if (!
$result) {
  die(
'Invalid query: ' mysql_error());
}

header("Content-type: text/xml");

// Start XML file, echo parent node
echo '<markers>';

// Iterate through the rows, printing XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
  
// ADD TO XML DOCUMENT NODE
  
echo '<marker ';
  echo 
'name="' parseToXML($row['name']) . '" ';
  echo 
'address="' parseToXML($row['address']) . '" ';
  echo 
'lat="' $row['lat'] . '" ';
  echo 
'lng="' $row['lng'] . '" ';
  echo 
'type="' $row['type'] . '" ';
  echo 
'/>';
}

// End XML file
echo '</markers>';

?>
Este codigo no muestra las ñ por pantallas. Añadi un
Código:
$xmlStr=str_replace("ñ",'&ntilde;',$xmlStr);
a la funcion parseToXML(), pero se cortaba la ejecucion en ese punto (se ve que los datos de la bbdd vienen directamente sin la ñ).

¿Que puedo hacer?

Gracias de antemano
  #2 (permalink)  
Antiguo 16/04/2008, 12:13
 
Fecha de Ingreso: noviembre-2006
Mensajes: 102
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Problemas con la ñ

Hay un error en el codigo php puesto antes. De hecho no es un error, lo puse bien, pero está mal interpretado y se muestra mal en el foro.

$xmlStr=str_replace("'",'&#39',$xmlStr); se interpreta como $xmlStr=str_replace("'",''',$xmlStr); y hace que el resto del codigo se vuelva una cadena de texto.

Saludos
  #3 (permalink)  
Antiguo 16/04/2008, 13:32
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
Re: Problemas con la ñ

para ñ y acentos no debes usar UTF8, sino iso-8859-1...

__________________
Esteban Quintana
  #4 (permalink)  
Antiguo 16/04/2008, 16:18
Avatar de Mikmoro
Colaborador
 
Fecha de Ingreso: octubre-2006
Ubicación: K-pax
Mensajes: 7.228
Antigüedad: 17 años, 6 meses
Puntos: 280
Re: Problemas con la ñ

Buenas. En la función me parece ver un pequeño error en la cuarta línea.
Ahí el coloreado del código cambia, y es porque no está reconociendo los caracteres. Si lo que quieres es reemplazar la comilla simple ('), lo deberías hacer por &apos;

function parseToXML($htmlStr)
{
$xmlStr=str_replace('<','&lt;',$htmlStr);
$xmlStr=str_replace('>','&gt;',$xmlStr);
$xmlStr=str_replace('"','&quot;',$xmlStr);
$xmlStr=str_replace("'",'&apos;',$xmlStr);
$xmlStr=str_replace("&",'&amp;',$xmlStr);
return $xmlStr;
}

Yo probaría a volver a poner la &ntilde; como primer línea, a ver qué pasa.

Otra cosa: ¿por qué en la primera línea, para el lt pones $htmlStr y para el resto $xmlStr?

Mikel.
  #5 (permalink)  
Antiguo 20/04/2008, 20:16
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Re: Problemas con la ñ

Cita:
Iniciado por jemarquesini Ver Mensaje
Mi problema es que yo no guardo el archivo, sino que, tal como se crea se muestra por pantalla.
Al igual que especificas mediante cabeceras HTTP que el contenido es un XML, especifica que el juego de caracteres es UTF-8.

Código PHP:
header("Content-type: text/xml; charset=utf-8"); 
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 00:25.