MySQLのエンコードの設定で悩んでいます。

これから、MySQLのVersion 3.23とPHP Version 4.3.2で不動産サイトを制作しようと思います。
Google Maps APIを使い地図表示をしようと考えています。
基本的にはPC向けなのですが、携帯用のページも作ろうと思うので、エンコードは何が一番効率が良いか悩んでいます。
携帯用ページのことも考えると「Shift-jis」が無難なのでしょうか?
GoogleMapはUTF-8の出力と思っていたのですが、CHINTAI(http://www.chintai.net/)を見たらShift-jisで表示してるのでShift-jisでも問題ないのかと…

どなたか、詳細なご意見お願いします。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2007/11/21 05:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:cyndy No.1

回答回数3ベストアンサー獲得回数1

ポイント20pt

私は、携帯サイト+PCサイト向けに、Mysql4.1.2で、文字コードはshift-jisにしています。

携帯サイトのことを考えてShift-jisにしました。

HTML、PHPもshift-jisにしています。

しかしながら、GoogleMAPはUTF-8のHTMLファイルをiframeで読み込んでいます。

CHINTAIみたいにSHIFT-JISでもいいんですね。知りませんでした。

しかし、よくあるCMSをインストールして組み込むときはちょっと困りました。

よくあるCMSはEUCで書かれていて、DBから日本語を取ってくるとほぼすべて文字化けしていました。

しかしMysqlからデータをSELECT,UPDATE、INSERTするときに

PHPの場合ですが、

mysql_query("/*!40101 SET NAMES ujis */", $this->link);

mysql_query("/*!40101 SET SESSION collation_connection=ujis_japanese_ci */", $this->link);

としておくとshift-jisのmysqlからEUCとして文字化けを回避して表示することが出来ました。

最新の携帯はUTF-8でも大丈夫のものもありますが、

2,3年前のはまだShift-Jisなので腑に落ちないけどShift-jisにしました。

FLAshとの連携でも、いちいちエンコーディングしているのが現状です。

わたしは、2年ぐらいしたら古い機種は無視して全部UTF-8で統一するつもりです。

id:black_kenchan

貴重なご意見有難う御座います。

やはり、時代はUTF-8ですかねぇ~

僕の場合は今から作るので、UTF-8で作って携帯は2年くらいShift-jisに変換しておいたほうが良いですかね。

2007/11/14 10:22:22
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント20pt

いろいろな点でバラバラの対応になりますね。


PHPは一応どのコードにも対応していますが、mb_string 系の関数を使うのであれば EUC_JP が無難です。


MySQL 3.X は Shift_JIS か EUC_JP にしか対応していない。

バイナリとして投入すれば UTF-8 でも使えるが、あまり推奨はしない。


また、携帯については Shift_JIS がベストだが、EUC_JP 他でも最近の物は問題ない。

ただし、絵文字を扱うなら、Shift_JIS か、UTF-8 でないと無理。


GoogleMap については使ったことがないので正確な情報ではありませんが、

処理の前後で文字コード変換を行えば動作はするものと思います。


ということで明確な答えではないですが、どこかで文字コード変換が入るのはあきらめなければならないかと。

自分なら絵文字無なら EUC_JP で統一してしまいますが。

id:black_kenchan

> MySQL 3.X は Shift_JIS か EUC_JP にしか対応していない。

とは、本当ですか?

どこかに説明されているサイトとかないですか?

UTF-8で、無理やり格納するとはやりバグなどがあるのでしょうか?

2007/11/14 12:58:04
id:hamster078 No.3

回答回数587ベストアンサー獲得回数4

ポイント20pt

mysqlがutf-8に正式対応したのは4.1からだったと思いますが、実際にはそれ以前から使えていました。どっちにしろ3系はもう古すぎます。内部をバイナリにできるのも、4.いくつかからだったと思います。現在のmysqlは表出コードはなにを選んでも、内部はutf-8になるはずです。しかし、その変換において、文字化けが起こるのです。だから、日本語の場合は表出もutf-8が文字化けが起こりにくい。携帯はs-jisですが、機種異存文字が多いので、そのままだとバケバケで使えないでしょう。

内部をバイナリにするという選択も、文字コード変換をさせないためです。

mysqlのコンパイルは大変なので、最適なコンフィグ法を調べてください。表出コードは設定ファイルでいくらでも変えられます。

id:black_kenchan

ちなみに3系の内部は、何になるのでしょうか?

調べたのですが、分かりませんでした。

ご存知でしたら教えて下さい!

2007/11/15 07:47:58
id:hamster078 No.4

回答回数587ベストアンサー獲得回数4

ポイント20pt

3系と4系では内部コードの扱いにかなりの違いがあり、現在のようには細かくわかれていないようです。以下をみると、3系でもutf-8が使えているようですね。ただし、これはコンパイルのときに、使うコードを追加しないとだめだと思いますが。


http://wind-master.dip.jp/soft-info/item/43/catid/4

こうやってみれば、現状がわかります。

mysql> SHOW VARIABlES LIKE "char%";

id:hamster078 No.5

回答回数587ベストアンサー獲得回数4

ポイント20pt

3.23系の日本語マニュアルです。

http://www.mysql.gr.jp/Manual/mysql-3.23.38/manual.ja_toc.html

id:black_kenchan

いろいろと親切に有難う御座います。

本当に参考になりました。

教えていただいたことを踏まえて考えます!!

ちなみにhamaster078さんだったらエンコードをなにで制作しようと思いますか?

2007/11/15 12:11:05
  • id:b-wind
    >> MySQL 3.X は Shift_JIS か EUC_JP にしか対応していない。
    >とは、本当ですか?
    >どこかに説明されているサイトとかないですか?
    このへん。
    http://tmtm.org/mysql/japanese.html
    結局のところ、Shift_JIS/EUC_JP にしても「一応使えるようにした」だけで「対応した」とは言い難い内容ですが。
    4.1 以降はこのあたりまったく別になってますので、お間違えなく。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません