PHP脚本无法正常工作:第1行第538行出错

时间:2012-09-19 18:26:35

标签: php mysql xml web xml-parsing

我不知道出了什么问题,我正在使用相同的脚本来获取另一个XML,它运行得很好。 这是脚本:

<?php
header("Content-type: text/xml");
echo "<?xml version=\"1.0\" encoding=\"LATIN-1\"?>";
echo "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">";
echo "<plist version=\"1.0\">";

function getXML($sql="SELECT IDCargo FROM database.table"){

    $conn   = mysql_connect ("myserverurl.com", "user", "psw");
    $db     = mysql_select_db("database");
    $result = mysql_query($sql, $conn);
    $column = "";
    echo "<array>";

    while($row = mysql_fetch_assoc($result)){
        $column .= "<dict>";
        foreach ($row as $key => $value){
            $column .= "<key>$key</key>";
            $column .= "<string>$value</string>";
        }
        $column .= "</dict>";
    }

    echo $column;
    echo "</array>";
    echo "</plist>";
}
getXML("SELECT IDCargo as ID_CARGO, SequencialDoCandidato as NUMERO_SEQ_CANDIDATO, NomeDoCandidato AS NOME_CANDIDATO, NumeroDoCandidato as NUMERO_CANDIDATO, NomeDoPartido AS SIGLA_PARTIDO, Estado as SIGLA_ESTADO,IDUnidadeEleitoral AS ID_CIDADE_CANDIDATO, UnidadeEleitoral AS CIDADE_CANDIDATO FROM database.table");
mysql_close();
?>

它带来了这个错误:

This page contains the following errors:

error on line 1 at column 538: Encoding error
Below is a rendering of the page up to the first error.

ID_CARGO11NUMERO_SEQ_CANDIDATO10000002965NOME_CANDIDATOAGRECINO DE SOUSANUMERO_CANDIDATO13SIGLA_PARTIDOPTSIGLA_ESTADOACID_CIDADE_CANDIDATO1120CIDADE_CANDIDATO

任何人都能看到吗?请给我一些帮助。 我从一个工作正常的脚本中得到了脚本。

2 个答案:

答案 0 :(得分:1)

如果我读了你的代码,我可以看到:

echo "<?xml version=\"1.0\" encoding=\"LATIN-1\"?>";

所以我想你想输出LATIN-1字符集。你需要在任何地方都指定这个字符集:

1 /您可以尝试在http标头上指定编码:

header("Content-type: text/xml; charset=ISO-8859-1");

2 /您还可以在数据库客户端上设置字符集:

mysql_set_charset('latin1', $db);

答案 1 :(得分:0)

您的输出很可能包含默认编码不支持的编码中的一个或多个字符。

更新您使用的编码,或者转义任何不符合编码的字符。 htmlentities php函数将是一个良好的开端。