从SQL输出的字符串中的Charset ..德语字符..我哪里出错了?

时间:2011-11-14 19:52:56

标签: php sql google-maps character-encoding

感谢您抽出宝贵时间!

我正在尝试整合地图应用以试验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"?>

..所以..我显然完全不知道我在做什么。

有人想帮忙吗?

1 个答案:

答案 0 :(得分:4)

传递变量时使用此字符串函数:

utf8_encode($variable);