[PHP-users 31147] Re: MediaWikiとMySQL間で利用する文字コードについて

MITSUYA MAEDA mitsuya.maeda @ gmail.com
2006年 12月 27日 (水) 17:23:53 JST


YuGo様

前田です。
この度はお世話になります。
アドバイスを頂きましたとおり、

> SHOW VARIABLES LIKE 'char%';

を実行してみますと、下記のデータが表示されました。

「character_set」:
「ujis」

「character_sets」:
「ujis big5 cp1251 cp1257 croat czech danish dec8 dos estonia euc_kr
gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin1
latin1_de latin2 latin5 sjis swe7 tis620 usa7 win1250 win1251ukr
win1251」

この一覧によると、データベースの文字コードはEUC-JP(ujis)に設定されているみたいです。
私の理解では、MySQLサーバと通信するクライアントは、PHPで実行する場合、PHPになる
ものだと思っております。そのため、PHPを処理する環境がUTF8であれば、MySQLサーバに
はUTF8で処理コマンドが送信されていると考えられます。

その場合、MySQLサーバがUTF8に対応していない、又は文字コードがUTF8以外であれば、
(この場合はujisになっておりますが。)
異なる文字コードで処理されるということになるため、日本語が正しく処理できないのではない
かと思います。

しかし、「ウィキペディア(Wikipedia)」(http://ja.wikipedia.org/)も下記の様にMySQL4.0.x
のバージョンを利用しております。

MediaWiki: 1.9alpha (r18574)
PHP: 5.1.2 (apache)
MySQL: 4.0.26-max-log

しかし、UTF8に対応していないはずのMySQL4.0.xを利用してMediaWikiは運用されており
ます。その他にも「WordPress」自身もUTF8でコードが書かれているはずですが、なぜ問題
なく運用し続けることができているのでしょうか。

 phpMyAdmin 2.6.2-pl1にて確認しますと、「Language」をEUC-JPに設定してデータの一覧を
取得しますと、確かに文字化けしております。

しかし、UTF8に設定して一覧を取得してみますとEUC-JPで保存しておいたデータが文字化け
を起こし、逆にUTF8で処理を行っていたPHPアプリケーションは文字化けせずに表示されました。

おそらく、この内容から推測できることとしましては、他の文字コードについても同じことが言える
のではないかと考えられます。

となりますと、MySQL自体はどのように文字コードを認識しているのかについて難しく考えられ
ます。

大変お手間をお取りいただきますが、皆様のお付き合いよろしくお願いいたします。
よろしくお願いいたします。

06/12/27 に YuGo<yu.gotou @ gtec-ni.com> さんは書きました:
> こんにちは。
>
> SHOW VARIABLES LIKE 'char%';
> というSQLを発行すれば、キャラクタセットがわかります。
>
>
> > しかしそのように考えますと、各フィールドに設定された型は、MySQLに渡された
> > データがUTF8であれば、MySQLのデフォルト文字コードに設定されている文字
> > コードでデータを構成する文字の並びを扱って保存しているのではないかと考え
> > ます。そうすれば、何らかの文字コードの扱いの問題で、MySQL自体の処理で
> > うまく行えないという問題が発生するのではないかとも考えたりもします。
> >
> > そのため、MySQL自身、UTF8という文字コードをどのように見ているかについて
> > アドバイスとご教授をしていただきたく思います。
> >
> > インストール環境:
> > MediaWiki: 1.8.2
> > PHP: 5.0.4 (cgi)
> > MySQL: 4.0.24
> >
> > 皆様、お忙しいことと思いますが、どうぞお力をお貸しください。
> > よろしくお願いいたします。
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>


-- 
前田 光哉 (MITSUYA MAEDA)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆準備中
◆◆mitsuya.maeda @ gmail.com


PHP-users メーリングリストの案内