ticarp 0 Denunciar post Postado Setembro 28, 2005 Fala pessoal!! Com base no curso do Wilker sobre API DOM, resolvi gerar um xml puchando dados de um bd. Só que não que aparecem acentos complica tudo. Se uso iso-8859-1 o xml é gerado até o momento em que aparece o primeiro acento, dai o script trava com os seguintes erros: Warning: output conversion failed due to conv error in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 38Warning: Bytes: 0xE3 0x3C 0x2F 0x64 in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 38Warning: encoder erroroutput conversion failed due to conv error in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 40Warning: Bytes: 0xE3 0x3C 0x2F 0x64 in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 40Se uso uft-8 o xml é gerado por completo mas os acentos são ignorados. Ficando assim as palavras: Amanh? (Amanhã), Jos? (José)...Esse é o código do script: <?function createContato($document, $nome, $data, $email, $texto, $aniversario, $id) { $contato = $document->createElement("contato"); $nomeN = $document->createElement("nome", $nome); $dataN = $document->createElement("data", $data); $emailN = $document->createElement("email", $email); $textoN = $document->createElement("texto", $texto); $idN = $document->createElement("id", $id); $contato->setAttribute("aniversario", $aniversario); $contato->appendChild($nomeN); $contato->appendChild($dataN); $contato->appendChild($emailN); $contato->appendChild($textoN); $contato->appendChild($idN); return $contato; } $dom = new DOMDocument("1.0", "ISO-8859-1");$dom->preserveWhiteSpace = false;$dom->formatOutput = true;$root = $dom->createElement("teste");mysql_connect("localhost", "ticarp_admin", "465446");mysql_select_db("ticarp_banco");$xml = mysql_query("SELECT * FROM `xml`");while ($line = mysql_fetch_assoc($xml)) { $root->appendChild(createContato($dom, $line['nome'], $line['data'], $line['email'], $line['texto'], $line['aniversario'], $line['id']));}$dom->appendChild($root); $dom->save("contatos.xml");echo $dom->saveXML();?>Já li que se usasse iso-8859-1 e depois passasse um utf8_decode() sairia acentuado, mas o script trava antes conforme dito antes. Conto com vcs!!! :D Tiago. Compartilhar este post Link para o post Compartilhar em outros sites
red neck * 0 Denunciar post Postado Setembro 29, 2005 tipo, você pode fazer um teste, funcionou numa aplicação que fiz... nao sei se ai funfaria function htm2xhtm($str){ $padrao = array("/á/","/ú/","/ã/","/ç/","/é/"); $replace = array("á","ú","ã","ç","é"); return preg_replace($padrao, $replace, $str); }pega a string vinda do DOM passa por essa funcao e ve se funfa[]'s Compartilhar este post Link para o post Compartilhar em outros sites
ticarp 0 Denunciar post Postado Setembro 29, 2005 boa saida cara!! :D vou tentar testar ela mais tarde! a principio larguei de mão a API DOM pra gerar o meu xml, tô fazendo na unha. :D Resumindo, a API DOM tá bugada quanto a essa questão de acentos?Valeu carinha!!Tiago. Compartilhar este post Link para o post Compartilhar em outros sites
ticarp 0 Denunciar post Postado Setembro 29, 2005 Essa aqui foi minha saída: <?mysql_connect("localhost", "ticarp_admin", "******");mysql_select_db("ticarp_banco");$xml = mysql_query("SELECT * FROM `xml`");$versao = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";echo $versao;while ($line = mysql_fetch_assoc($xml)) { echo "<item id=\"".$line['data']."\">\n"; foreach ($line as $k => $l) { if ($k == "texto"){ echo "<".$k.">\n<![CDATA[".$l."]]>\n</".$k.">\n"; } elseif ($k != "data") { echo "<".$k.">".$l."</".$k.">\n"; } } echo "</item>\n";}?> Aqui ela funcionando. http://www.tiagoalencar.com/gerando_xml_bd_unha5.php Tiago. Compartilhar este post Link para o post Compartilhar em outros sites
red neck * 0 Denunciar post Postado Setembro 29, 2005 opabom, não é o DOM em si, é o proprio XML que não aceita acentos =/, tipo eu ainda nao aconselho a usar DOM, porque ele so virou padrao apartir do php5, entao ate o php5 dominar os servidores, eu nao aconselho..tipo que bao que você conseguiu resolver seu problema, so adiciona um detalhe para retornar um arquivo XML <?header("Content-type: text/xml");mysql_connect("localhost", "ticarp_admin", "******");mysql_select_db("ticarp_banco");$xml = mysql_query("SELECT * FROM `xml`");echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";while ($line = mysql_fetch_assoc($xml)) {echo "<item id=\"".$line['data']."\">\n";foreach ($line as $k => $l) { if ($k == "texto"){ echo "<".$k.">\n<![CDATA[".$l."]]>\n</".$k.">\n"; } elseif ($k != "data") { echo "<".$k.">".$l."</".$k.">\n"; }}echo "</item>\n";}?>é isso[]'s Compartilhar este post Link para o post Compartilhar em outros sites
Tiago Goncalves 0 Denunciar post Postado Junho 26, 2007 Olá... boas novas amigos! Estava com o mesmo problema, e resolvi da seguitne forma: Usei a função utf8_encode() (ao contrário do que você ditou, usando o utf8_decode()) Funcionou que é uma beleza. Espero ter ajudado. abraços http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Fala pessoal!! Com base no curso do Wilker sobre API DOM, resolvi gerar um xml puchando dados de um bd. Só que não que aparecem acentos complica tudo. Se uso iso-8859-1 o xml é gerado até o momento em que aparece o primeiro acento, dai o script trava com os seguintes erros: Warning: output conversion failed due to conv error in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 38Warning: Bytes: 0xE3 0x3C 0x2F 0x64 in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 38Warning: encoder erroroutput conversion failed due to conv error in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 40Warning: Bytes: 0xE3 0x3C 0x2F 0x64 in /home/ticarp/public_html/gerando_xml_bd_decode.php on line 40Se uso uft-8 o xml é gerado por completo mas os acentos são ignorados. Ficando assim as palavras: Amanh? (Amanhã), Jos? (José)...Esse é o código do script: <?function createContato($document, $nome, $data, $email, $texto, $aniversario, $id) { $contato = $document->createElement("contato"); $nomeN = $document->createElement("nome", $nome); $dataN = $document->createElement("data", $data); $emailN = $document->createElement("email", $email); $textoN = $document->createElement("texto", $texto); $idN = $document->createElement("id", $id); $contato->setAttribute("aniversario", $aniversario); $contato->appendChild($nomeN); $contato->appendChild($dataN); $contato->appendChild($emailN); $contato->appendChild($textoN); $contato->appendChild($idN); return $contato; } $dom = new DOMDocument("1.0", "ISO-8859-1");$dom->preserveWhiteSpace = false;$dom->formatOutput = true;$root = $dom->createElement("teste");mysql_connect("localhost", "ticarp_admin", "465446");mysql_select_db("ticarp_banco");$xml = mysql_query("SELECT * FROM `xml`");while ($line = mysql_fetch_assoc($xml)) { $root->appendChild(createContato($dom, $line['nome'], $line['data'], $line['email'], $line['texto'], $line['aniversario'], $line['id']));}$dom->appendChild($root); $dom->save("contatos.xml");echo $dom->saveXML();?>Já li que se usasse iso-8859-1 e depois passasse um utf8_decode() sairia acentuado, mas o script trava antes conforme dito antes. Conto com vcs!!! :D Tiago. Compartilhar este post Link para o post Compartilhar em outros sites