スポンサードリンク

Google Maps API/PHP+MySQLで収得したXMLファイルの日本語の文字化け

ネットで調べるとphpMyAdmin、MySQL、php(特にphp5)で、文字化けに関する記事が多いこと。 しかも、ナンか根気強く解決に当たらなければいけない雰囲気。 当方素人、困るよな。

しかし、文字化けしたGoogle Maps じゃ。使いもんにならんし・・・・・・はぁ~。

 

◆データベースとの接続 PHP経由でMySQLからGoogle Maps 位置座標データを収得。

◆不具合内容 収得したXMLファイルの日本語の部分がずべて「?????」と表示されてしまう。

下記kouen-demo.phpにブラウザでアクセス。

ソースの表示で次のようにXMLが表示される。 従って、MySQL→PHP間の問題かな。

<markers><marker linkurl=”&lt;a href=&quot;http://********/tokyo-koganei.html&quot; target=&quot;_blank&quot;&gt;?????&lt;/a&gt;” explanation=”?” lat=”35.714559″ lng=”139.517698″ category=”kouen” name=”?????”/>

 

◆解決 PHP経由でMySQLにデータベースに登録する際に、phpMyAdmin側で文字化けするとの記事を見つけ、当方と逆。 逆もまた同じか?考えデータベースへ接続するコマンドを1行追加したら正常になった(mysql_query(“SET NAMES utf8″);)。ふ~。素人だと解決までが大変・・・。

 

<?php
require(“dbinfo.php”);
$dom = new DOMDocument(“1.0″);
$node = $dom->createElement(“markers”);
$parnode = $dom->appendChild($node);
$connection=mysql_connect($hostname, $username, $password);
mysql_query(“SET NAMES utf8″);
if (!$connection) {
die(‘Not connected :’.mysql_error());
}
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {die (‘Can\’t use db:’.mysql_error());}
$query = “SELECT * FROM KOUEN WHERE 1″;
$result = mysql_query($query);
if (!$result) {
die(‘Invalid query:’.mysql_error());}
header(“Content-type: text/xml”);
while ($row = @mysql_fetch_assoc($result)){
$node = $dom->createElement(“marker”);
$newnode = $parnode->appendchild($node);
$newnode->setattribute(“linkurl”, $row[‘linkurl’]);
$newnode->setattribute(“explanation”, $row[‘explanation’]);
$newnode->setattribute(“lat”, $row[‘lat’]);
$newnode->setattribute(“lng”, $row[‘lng’]);
$newnode->setattribute(“category”, $row[‘category’]);
$newnode->setattribute(“name”, $row[‘name’]);
}
echo $dom->saveXML();
?>
上記ソースのコピー用
<?php
require("dbinfo.php");
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
$connection=mysql_connect($hostname, $username, $password);
mysql_query("SET NAMES utf8");
if (!$connection) {
  die('Not connected :'.mysql_error());
}
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {die ('Can\'t use db:'.mysql_error());}
$query = "SELECT * FROM KOUEN WHERE 1";
$result = mysql_query($query);
if (!$result) {
die('Invalid query:'.mysql_error());}
header("Content-type: text/xml");
while ($row = @mysql_fetch_assoc($result)){
  $node = $dom->createElement("marker");
  $newnode = $parnode->appendchild($node);
  $newnode->setattribute("linkurl", $row['linkurl']);
  $newnode->setattribute("explanation", $row['explanation']);
  $newnode->setattribute("lat", $row['lat']);
  $newnode->setattribute("lng", $row['lng']);
  $newnode->setattribute("category", $row['category']);
  $newnode->setattribute("name", $row['name']);
}
echo $dom->saveXML();
?>
◆確認
XMLファイルの呼び出しもOK
<markers><marker linkurl=”&lt;a href=&quot;http://*********/kouen/chiba-anderusen.html&quot; target=&quot;_blank&quot;&gt;&#x8A73;&#x7D30;&#x30EA;&#x30F3;&#x30AF;&lt;/a&gt;” explanation=”&#x6709;&#x6599;&#x30C6;&#x30FC;&#x30DE;&#x30D1;&#x30FC;&#x30AF;&#x578B;&#x516C;&#x5712;&#x3002;&#x30A2;&#x30B9;&#x30EC;&#x30C1;&#x30C3;&#x30AF;&#x3068;&#x5927;&#x578B;&#x904A;&#x5177;&#x304C;&#x5927;&#x5909;&#x5145;&#x5B9F;&#x3002;&#x591A;&#x6570;&#x6ED1;&#x308A;&#x53F0;&#x3082;&#x6709;&#x308A;” lat=”35.760191″ lng=”140.061629″ category=”kouen” name=”&#x8239;&#x6A4B;&#x30A2;&#x30F3;&#x30C7;&#x30EB;&#x30BB;&#x30F3;&#x516C;&#x5712;”/>
◆サンプル
HTMLのソースは、次のサンプルから
PHP+MySQL+Google Maps API(1)

スポンサードリンク

Related Posts
  1. PHPもmysqlも初心者です。
    管理人様の手順を見て、同じようにやってみたのですが
    xmlファイル生成時に
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    このようなエラーが出てしまいます。
    自分なりに色々調べてみましたが、原因がわかりません。
    OSはwindows7 PHP5.3.1 xamppを使っています。
    よろしければ原因を教えていただけないでしょうか。

  2. このエラーコードは経験がありませんので、お役に立てそうもありません。
    php+MySQlでGoogle Mapにマーカーを表示させるためのphpファイルで、xmlファイルを出力させるのは難しいものではありません。私は、このGoogleのページを参照しただけです。http://code.google.com/intl/ja/apis/maps/articles/phpsqlsearch_v3.html

    手順は、次の通りでした。
    その1:データベース(phpMyAdmin)の準備
    phpMyAdmin で MySQL にデータテーブルを作成するデータベースSQLの作成
    MySQL データテーブルにテキストファイルでインポートしてデータベースに登録。
    phpMyAdmin MySQLのテーブルデータ(文字列)の置換について

    その2:データベースのマーカ情報をXMLファイルで読み出すためのphpファイルの作成
    MySQL データベースの情報を記述するPHPファイルの作成
    XML形式にテーブルデータをGoogle Mapsで読み出すためのPHPファイルを作成
    PHPを使用したXMLファイルの出力を確認チェックする方法・・・(ココまでがMySQL、XMLファイル吐き出しの基本。)

    私が体験したエラー
    Warning: Cannot modify header information
    PHP+MySQLで収得したXMLファイルの日本語の文字化け

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">