Спасибо, что нашли время!
Я пытаюсь собрать приложение сопоставления, чтобы экспериментировать с API Google Maps V3. Это также мой первый выпуск XML с PHP / SQL, а затем обработка результатов.
Я использую это как мой путеводитель >> 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);