Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Programación General (http://www.forosdelweb.com/f14/)
-   -   Problemas con la ñ (http://www.forosdelweb.com/f14/problemas-con-n-576658/)

jemarquesini 16/04/2008 12:09

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

jemarquesini 16/04/2008 12:13

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

monoswim 16/04/2008 13:32

Re: Problemas con la ñ
 
para ñ y acentos no debes usar UTF8, sino iso-8859-1...

:adios:

Mikmoro 16/04/2008 16:18

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.

jam1138 20/04/2008 20:16

Re: Problemas con la ñ
 
Cita:

Iniciado por jemarquesini (Mensaje 2366477)
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"); 



La zona horaria es GMT -6. Ahora son las 05:14.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.