Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lbento0077

Acentos substituídos por caracteres

Recommended Posts

Oi Pessoal,Estou tentando enviar os dados k tenho numa tabela em mysql, para os colocar depois no google maps. Para isso tenho que construir um ficheiro XML em PHP que será o responsável por comunicar com o google maps.O script seguinte está a funcionar na boa, o problema são os caracteres com acento, que são substituídos por outros. Alguém me pode ajudar? Obrigado desde já,lbento0077<?phprequire("db.php");// Start XML file, create parent node$doc = new DomDocument('1.0');$node = $doc->createElement("Marcadores");$parnode = $doc->appendChild($node);// Opens a connection to a mySQL server$connection=mysql_connect ($host, $user, $password);if (!$connection) { die('Not connected : ' . mysql_error());}// Set the active mySQL database$db_selected = mysql_select_db($nameBD, $connection);if (!$db_selected) { die ('Can\'t use db : ' . mysql_error());}// Select all the rows in the markers table$query = "SELECT * FROM google_maps WHERE 1";$result = mysql_query($query);if (!$result) { die('Invalid query: ' . mysql_error());}header("Content-type: application/xml");// Iterate through the rows, adding XML nodes for eachwhile ($row = @mysql_fetch_assoc($result)){ // ADD TO XML DOCUMENT NODE $node = $doc->createElement("marcador"); $newnode = $parnode->appendChild($node); $newnode->setAttribute("nome", $row['NOME_MARCADOR']); $newnode->setAttribute("endereco", $row['ENDERECO_MARCADOR']); $newnode->setAttribute("lat", $row['LAT_MARCADOR']); $newnode->setAttribute("long", $row['LONG_MARCADOR']); $newnode->setAttribute("tipo", $row['TIPO_MARCADOR']);}echo $doc->saveXML();?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro tu tem de certificar que ta criando os nodes como CDATAsegundo tu tem que dar um utf_decode (acho que é esse o nome) no retorno do valor do node...abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma pequena correção.... ao invés de utf_decode o correto é utf_encode....utf_decode faz o inverso.... ele decodifica de UTF-8

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Pessoal,

 

Problema resolvido http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Aqui fica o código com as devidas alterações para quem tiver o mesmo problema.

Mais uma vez muito obrigado pela ajuda que deram.

 

<?php

require("db.php");

 

// Start XML file, create parent node

$doc = new DomDocument('1.0');

$node = $doc->createElement("Marcadores");

$parnode = $doc->appendChild($node);

 

// Opens a connection to a mySQL server

$connection=mysql_connect ($host, $user, $password);

if (!$connection) { die('Not connected : ' . mysql_error());}

 

// Set the active mySQL database

$db_selected = mysql_select_db($nameBD, $connection);

if (!$db_selected) { die ('Can\'t use db : ' . mysql_error());}

 

// Select all the rows in the markers table

$query = "SELECT * FROM google_maps WHERE 1";

$result = mysql_query($query);

if (!$result) { die('Invalid query: ' . mysql_error());}

 

// Mostra a estrutura do ficheiro XML

header("Content-type: application/xml; charset=iso-8859-1");

 

// Iterate through the rows, adding XML nodes for each

while ($row = @mysql_fetch_assoc($result))

{

// ADD TO XML DOCUMENT NODE

$node = $doc->createElement("marcador");

$newnode = $parnode->appendChild($node);

 

//utf8_encode(string $data) permite a utilizacao de acentos nos dados obtidos da BD

$newnode->setAttribute("nome", utf8_encode($row['NOME_MARCADOR']));

$newnode->setAttribute("endereco", utf8_encode($row['ENDERECO_MARCADOR']));

$newnode->setAttribute("lat", $row['LAT_MARCADOR']);

$newnode->setAttribute("long", $row['LONG_MARCADOR']);

$newnode->setAttribute("tipo", $row['TIPO_MARCADOR']);

}

 

echo $doc->saveXML();

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso mesmo! valeu fileas ;)ah, lbento, no caso você pode fazer isso ai pra mostrar o xml na tela, mas se quiser pegar um node CDATA UTF-8, vai ter que brincar de encode :)abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.