人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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でも問題ないのかと…

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

●質問者: black_kenchan
●カテゴリ:ウェブ制作
✍キーワード:23 CHINTAI Google Maps API JIS MySQL
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● cyndy
●20ポイント

私は、携帯サイト+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で統一するつもりです。

◎質問者からの返答

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

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

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


2 ● b-wind
●20ポイント

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


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で、無理やり格納するとはやりバグなどがあるのでしょうか?


3 ● hamster078
●20ポイント

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

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

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

◎質問者からの返答

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

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

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


4 ● hamster078
●20ポイント

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


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

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

mysql> SHOW VARIABlES LIKE "char%";


5 ● hamster078
●20ポイント

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

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

◎質問者からの返答

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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ