dポイントプレゼントキャンペーン実施中!

現在GoogleMapを用いたコミュニケーションツールを作成しており、
GoogleMapに対する操作をjavascript、
任意に配置したマーカーに対してフォームに入力されたユーザーのクチコミ情報
などのデータ更新関係をPHPで行っています。
(GoogleMap ⇔ javascript ⇔ PHP[4.4.2] ⇔ DB[mySQL])

問題はDBへ場所情報(マルチバイト文字)を保存する時と画面へ呼び出す
時とで文字化けをしてしまうことです。
いろいろなページを参考に調べていくと「文字コードの不統一が原因」とされていて
ファイルの文字コードを変換してアップロードする、またはエンコード処理を行う、
など書かれているのですが、私のケースで何をどう処理を施せばいいのかわからないのでどうか教えて下さい。

・統一する文字コードは?
 :参考にしているGoogleMapの本のサンプルでは
  PHPで行ったDB問い合わせ結果をjavascriptへ受け渡す際、JSONで行っています。
  その関係で文字コードは「UTF-8」に統一、的な図式になっているのですが、
  統一するのはUTF-8でよいのでしょうか?

・どこで設定?
 :PHPではSQL発効のみ行っているいるのですが、その問い合わせ結果に対して
  mb_convert_encodingなどの処理が必要なのでしょうか?
  本のサンプルでは処理の始めに以下の記述があることでOKというような
  感じで書かれているのですが...
  header("Content-type: application/json");
  ini_set("mbstring.script_encoding", "utf-8");
  ini_set("default_charset", "utf-8");

・対象となるファイルは?
 :html,js,phpすべての関連ファイルの文字コードを変換してアップロードしなければならないのでしょうか?

A 回答 (1件)

誰もレスをつけないので(笑。



文字化けを起こした場合、文字コードについては基本的に細かく設定していく必要があると思います。
php.iniや.htaccessだけで文字コードを設定してもなかなか文字化けは回避出来ません。
また、phpファイルやJSONの文字コードと、実際書かれているスクリプトの文字コードが一致しないのも文字化けの原因です。
更に、MySQLは特に4.1以降では、マルチバイト対応になったおかげで逆に文字化けしやすかったりします。

全てをUTF-8に統一出来れば完璧でしょうが、サーバ環境や、MySQLの設定まで及びます。なかなか簡単ではないと思います。
文字化けが発生した場合、出来るだけ明確に、明示的にしながら設定して行く事が良いと思います。

例えば、外部からの変数はUTF-8に統一、内部文字エンコードとファイルはEUC-JP(LinuxやMySQLのデフォルトはEUCが多い)で統一、出力はUTF-8に再エンコード、と言うような具合です。

また、GoogleMapsに関しては、
<script src="http://maps.google.com/maps........." type="text/javascript" charset="UTF-8"></script>
として外部文字エンコードを明示的にUTF-8と指定すれば、EUC-JPやSJISのページからでも問題なく表示されます。


参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!