感谢您抽出宝贵时间!
我正在尝试整合地图应用以试验Google Maps 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"?>
..所以..我显然完全不知道我在做什么。
有人想帮忙吗?
答案 0 :(得分:4)
传递变量时使用此字符串函数:
utf8_encode($variable);