POSTの値が日本語だと表示されない現象について質問です。

2,007 views
Skip to first unread message

クロ

unread,
Jun 24, 2010, 7:46:28 AM6/24/10
to Google-Maps-API-Japan
お世話になります。
下記google mapsのスクリプトをphpに設置し表示させたいのですが、
POSTしてきた値を下記スクリプトへ代入し、その値が英数字ならば表示されるのですが【$_POST["keido"],
$_POST["ido"],$_POST["tel"],etc..】、
値が日本語だと表示されません。【$_POST["address"]】
もちろん$_POST["address"]の値が英数字ならば表示されます。
直接下記スクリプトへ日本語を入れておけば表示されます。
POSTしてきた値が日本語でも表示されるような書き方をご存知の方、
ご教授を宜しくお願いいたします。

<div id="map"></div>
<script src="http://maps.google.com/maps?
file=api&amp;v=2&amp;sensor=true&amp;key=ABQIAAAAmVH89CAx2y4RcuqIsY7hPhSF3GzIfD08CBf0EWqJAV5WAxJCghQSmW9Ilcv8gp-9xCvUDzedKcuaBg"
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
var map;
var markers = new Array(1);
map = new
GMap2(document.getElementById("map"));
map.setCenter(new GLatLng($_POST["ido"],
$_POST["keiido"]),16);
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.addControl(new GOverviewMapControl());
map.setMapType(G_NORMAL_MAP);
var marker = null;
var n_markers = 0;

var markeropts = new Object();
markeropts.title = "Place Name";
marker = new GMarker(new
GPoint($_POST["keido"],$_POST["ido"]), markeropts);
markers[n_markers] = marker;
GEvent.addListener(markers[0],
"mouseover", function () {markers[0].openInfoWindowHtml("Place Name -
場所名 -<br />住所$_POST["address"] <br />TEL:$_POST["tel"] ");});
n_markers++;
map.addOverlay(marker);
//]]>
</script>

GMapApi Yuu

unread,
Jun 24, 2010, 8:23:36 PM6/24/10
to google-map...@googlegroups.com
PHPで作成したHTMLをブラウザ側でソースの表示をして見てください。
きっとPHPの変数部分は日本語が文字化けしているか、入っていないと思います。
問題はいろいろなケースがありますが、
とりあえずクライアントのGoogleMap側というよりは
サーバ側のPHPということだけは解ります。
日本語系の問題でよくあるのは、文字コード関連が多いので、
まずはそこから調べて見ると良いと思います。

2010年6月24日20:46 クロ <webm...@garb.co.jp>:

> --
> このメールは Google グループのグループ「Google-Maps-API-Japan」の登録者に送られています。
> このグループに投稿するには、google-map...@googlegroups.com にメールを送信してください。
> このグループから退会するには、google-maps-api-...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/google-maps-api-japan?hl=ja からこのグループにアクセスしてください。
>
>

クロ

unread,
Jun 24, 2010, 10:44:48 PM6/24/10
to Google-Maps-API-Japan
早速のお返事有難うございます~!

もともと、文字化けはしておりませんでしたが、
ご教授頂いた、文字コード関連をやってみました。

phpのmbstring設定を下記の通りにしてみました。
mbstring.detect_order null → auto
mbstring.encoding_translation Off(そのまま)
mbstring.func_overload 0 (そのまま)
mbstring.http_input pass (そのまま)
mbstring.http_output pass (そのまま)
mbstring.internal_encoding nullmigi → UTF-8
mbstring.language "neutral" → Japanese
mbstring.strict_detection Off (そのまま)
mbstring.substitute_character no value(そのまま)
※Local・Master Value 共通

ソースを表示し、見てみましたが、文字化けしておりませんでした。
が、地図は表示されずです。泣

他、文字コード関連で気付いていない箇所がございますでしょうか??
お忙しいところ申し訳ございませんが、ご教授頂ければ幸いです。

W少年

unread,
Jun 25, 2010, 11:54:38 AM6/25/10
to Google-Maps-API-Japan
私もPHPでコーディングしていますが、POSTがらみの問題は1回しかありませんでした。
文字コードは鍵と鍵穴の関係なので送り側と受け側のサイトの文字コード、またはエンコードとデコードの関数をそろえないとバグの原因になります。
特に制約がなければUTF-8で値をやり取りするのがいいようです。
1回だけと申しますのはformから値を送るときデフォルトがGETで送られるということです。
PHPはGETとPOSTを区別するので送り側のformタグに
method="POST"
と明記しないといけません。
また、緯度経度は日本語ではなく数値です。
半角英数字で送るのでなければ全角英数字は自前で正規表現を用いて半角英数字の数値に変換する必要があります。
あと、国により小数点がピリオドだったりカンマだったりするので面倒な問題ではあります。
私の環境では全角の+-がうまくPHPで変換できずに諦めたことがありました。
Message has been deleted

GMapApi Yuu

unread,
Jun 27, 2010, 8:07:30 PM6/27/10
to google-map...@googlegroups.com
直接日本語を記述したときは表示されて、
変数を埋め込んで日本語を挿入した時は表示されないというのが気にかかります。
レスポンスのhtmlが同じになるように上記の2パターンを試して見てください。
同じレスポンスが帰っているのであれば、動作は同じになるはずです。
念のため上記のhtmlをTextEditerでDiffを取って見てください。
それでも駄目であればバイナリ比較して見てください。
きっとどこかに違いがあるはずです。

2010年6月25日11:44 クロ <webm...@garb.co.jp>:

クロ

unread,
Jul 6, 2010, 6:00:11 AM7/6/10
to Google-Maps-API-Japan
お返事が遅くなりまして、申し訳ございませんでした。m(__)m
この間に、無事に解決することが出来ました。

何が原因だったかと申しますと、ずばり改行コードでした!
POSTされてきた値をスクリプトにはめ込む前に、”str_replace”で
改行コードを除去。
すると、正常に表示されました。



ご教授頂いたみなさま、本当にありがとうございました~!

Reply all
Reply to author
Forward
0 new messages