SQL的XML输出中的字符集.德语字符.我哪里做错了


Charset in XML output from SQL .. german characters .. where am I going wrong?

感谢您的宝贵时间!

我正试图把一个地图应用程序与谷歌地图V3 API的实验。这也是我第一次用PHP/SQL输出XML,然后处理结果。

我使用这个作为我的指南>> http://code.google.com/apis/maps/articles/phpsqlsearch_v3.html

我的问题是当我使用包含德语地址/字符的SQL表时,它不工作-我得到这个错误抛出给我

This page contains the following errors:
error on line 2 at column 1: Extra content at the end of the document 

. .并检查页面源代码,我看到这个…

<b>Warning</b>:  DOMElement::setAttribute() [<a href='domelement.setattribute'>domelement.setattribute</a>]: string is not in UTF-8 in <b>/Applications/MAMP/htdocs/guruTest/guruTest.php</b> on line <b>46</b><br />
<br />
<b>Warning</b>:  DOMDocument::saveXML() [<a  href='domdocument.savexml'>domdocument.savexml</a>]: output conversion failed due to conv  error, bytes 0xDF 0x65 0x20 0x33 in <b>/Applications/MAMP/htdocs/guruTest/guruTest.php</b>  on line <b>52</b><br />
<?xml version="1.0" ?>
<markers>

使用相同的PHP/SQL,但切换到英文地址数据库,它工作得很好。看来问题出在我的德国地址中的德国字符。

我最初的代码和你在code.google.com上看到的差不多。在该示例中,没有给出XML文档的字符集。

我认为问题就在这里

$result = mysql_query($query);
if (!$result) {
  die("Invalid query: " . mysql_error());
}
header("Content-type: text/xml");
// Iterate through the rows, adding XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
  $node = $dom->createElement("marker");
  $newnode = $parnode->appendChild($node);
  $newnode->setAttribute("name", $row['name']);

当我开始看到我的德语信息错误时,我在头部声明中添加了编码。只要这样做……

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

但我的错误缠身的XML输出仍然显示

<?xml version="1.0" encoding="ISO-8859-1"?>

. .所以. .我完全不知道自己在做什么。

有人想帮忙吗?

在传递变量时使用这个字符串函数:

utf8_encode($variable);