これから、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でも問題ないのかと…
どなたか、詳細なご意見お願いします。
私は、携帯サイト+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で統一するつもりです。
いろいろな点でバラバラの対応になりますね。
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 で統一してしまいますが。
> MySQL 3.X は Shift_JIS か EUC_JP にしか対応していない。
とは、本当ですか?
どこかに説明されているサイトとかないですか?
UTF-8で、無理やり格納するとはやりバグなどがあるのでしょうか?
mysqlがutf-8に正式対応したのは4.1からだったと思いますが、実際にはそれ以前から使えていました。どっちにしろ3系はもう古すぎます。内部をバイナリにできるのも、4.いくつかからだったと思います。現在のmysqlは表出コードはなにを選んでも、内部はutf-8になるはずです。しかし、その変換において、文字化けが起こるのです。だから、日本語の場合は表出もutf-8が文字化けが起こりにくい。携帯はs-jisですが、機種異存文字が多いので、そのままだとバケバケで使えないでしょう。
内部をバイナリにするという選択も、文字コード変換をさせないためです。
mysqlのコンパイルは大変なので、最適なコンフィグ法を調べてください。表出コードは設定ファイルでいくらでも変えられます。
ちなみに3系の内部は、何になるのでしょうか?
調べたのですが、分かりませんでした。
ご存知でしたら教えて下さい!
3系と4系では内部コードの扱いにかなりの違いがあり、現在のようには細かくわかれていないようです。以下をみると、3系でもutf-8が使えているようですね。ただし、これはコンパイルのときに、使うコードを追加しないとだめだと思いますが。
http://wind-master.dip.jp/soft-info/item/43/catid/4
こうやってみれば、現状がわかります。
mysql> SHOW VARIABlES LIKE "char%";
いろいろと親切に有難う御座います。
本当に参考になりました。
教えていただいたことを踏まえて考えます!!
ちなみにhamaster078さんだったらエンコードをなにで制作しようと思いますか?
貴重なご意見有難う御座います。
やはり、時代はUTF-8ですかねぇ~
僕の場合は今から作るので、UTF-8で作って携帯は2年くらいShift-jisに変換しておいたほうが良いですかね。