|
テーマ:マックなソフトたち(439)
カテゴリ:macしか使えない私
ややこしい世界で奮闘中。
先日の日記に書いた通り、MySQLとその周りの文字化けと戦っています。 答えを探しにgoogle検索の旅へ… …あらら、「MAMP 文字化け」で検索したら、自分の日記に戻ってしまいました。堂々巡りじゃん。(>_<) っていうか、「文字化けでハマっています」だけでは、万が一誰かが辿り着いた時に申し訳ないので、今理解している事をもう少しメモしておきます。 (ちなみにこういう態度だと、マイナーな話題にはどんどん突っ込んで行くハメになる。) 私の環境は、以下の通り。 MAMP1.3.1 MySQL5.0.19 PHP5.1.4 phpMyAdmin2.7.0-pl2 mac OS10.3.9 <文字化け その1> MAMPをインストールしたあと、な~んにもわからないままに、試しにphpMyAdminでデータベースをでっち上げたところ、日本語を入れたフィールドがさくっと文字化けしました。 …ちょっと冷静に画面を観察し、それらしいところを探します… 「照会順序」というプルダウン項目が怪しいです。 ここを見ると、世界の文字コードがいっぱい並んでいます。 (しかも、デフォルトで(?)latin1_swedish_ciになっていました。私ゃスウェーデン人じゃないよ~。) ここを、ユニコードのutf8_general_ciに変更。 ちなみに、日本語は他にもEUCやShiftJISが使えますが、私の用途では外国語(各国語)が入る事が十分あり得るので、ここではユニコードを選んでいます。 しかし、ただ変更しただけでは、一度入れてしまった日本語は元に戻りませんでした。変更後に中身を消して、もう一度データを打ち直したところ、今度はきちんと日本語で表示されるようになりました。(最初から照会順序をきちんとしておけ、という事のようです。) 今まで使っていたAppleWorksとかFileMaker3.0では、ユニコードが使えませんでした。しかたがないので、「ユニコード化までの注」というフィールドをわざわざ作って、「ESPANAのNの上にニョロ」なんていう注記をつけているくらいです(笑)。これをもしもユニコードで新しく作り直せれば、かなりしあわせになれそうです。 (実用化のメドはありませんが(^_^;)…将来の”夢”として。) <文字化け その2> <その1>によりきちんと日本語で表示されたテーブルですが、本についていたPHPスクリプトでデータを引っぱると、また前と同じような文字化けをしてしまいました。この対策はなかなか理解ができなくて、かなり苦しみました。 ちなみに、MAMPで作ったPHPファイルはhtdocsフォルダへ入れます。 デフォルト設定の場合、ブラウザでアクセスするURLは以下の通り。 http://localhost:8888/○○○.php ここでつまずいたのは私だけかもしれませんが、いちおう...ψ(。。)メモメモ... この文字化けについていろいろ調べたところ、クライアントであるPHPさんにも「データはユニコードでよろしく」と注文をつけないとダメみたいなんです。指示が無いと、PHPさんではデフォルトのlatin1(そして文字化け)になってしまうようでした。 (もしかすると、<その1>でやったことは、クライアントのphpMyAdminさんに指示を出しただけだったのかもしれません。) PHPさんに指示を出すには、具体的には、 mysql_connect で、データベースに接続し、 mysql_select_db で、データベースを選択し、 ここからSELECT FROM~と文字列を見に行く前に! mysql_query("set names utf8"); この1行で「UTF-8でよろしく!」と、一声かければ良いようです。 なお、本についていたサンプルはEUCで作られていましたので、それに従って"set names ujis"にしてみたところ、本の通りにきちんと表示されました。ヾ(@⌒▽⌒@)ノ (気を良くして全部UTF-8にしたところ、また別なところが文字化けしました。長くなるので、この話題は次の日記へ。) ちなみに、命令の最後にセミコロンをつけるのを忘れて、画面が真っ白になって私の頭も真っ白になったのは、ココだけのヒミツです。ミスに気付くまで、だいぶ時間がかかりました。だって、PHPなんて書くの初めてなんだもん。 ところで、この「PHPさんへの指示」のやり方だと、PHPさんを使うたびに何度も指示をしなくてはならなく、少々面倒。 これをサボるには、MYSQLの設定ファイルである「my.cnf」の中の[mysqld]のところに skip-character-set-client-handshake という魔法の1文を加えると、サーバーさん(MYSQL)もクライアントさん(PHPなど)も、同じ文字コードで手をつないでくれるらしいのです。(*^ー^)人(^ー^*) ところが、MAMPで簡単インストールをしていると「my.cnf」なんて見た覚えも作った覚えも無いんですよね。で、公式マニュアル見てもWindowsの場合とUnixの場合しか書いてありません。 えーと。( ̄~ ̄;) macは、MYSQL的には「macの皮をかぶったUnix」なのかな? …ってことは、Unixの /etc/my.cnf → グローバルオプション DATADIR/my.cnf → サーバ固有オプション ってやつで良さそう。 /etcってのは、mac上では不可視フォルダで、いじるのが面倒。 (Finderの「移動」-「フォルダへ移動…」ダイヤログに/etcと入れると、行けますが。) 上から順に見に行くみたいだから、1つだけ作るぶんには、グローバルオプションでもサーバ固有オプションでも、どっちでも良さそうな気がします。 DATADIRってのが「MySQL データディレクトリ」だそうなので、 /MAMP/db/mysql/my.cnf (サーバ固有オプション)で良さそうです。 (これはまだ時間が無くて、試していません。調べただけ。) 参考URL ・日本MySQLユーザ会 ここのFAQにかなり詳しく書いてありますが、正直な話、初見で全く意味が分かりませんでした。あちこち調べてから戻って読んで、やっと何が書いてあるのか少しわかった程度。 ・MySQL 4.1 日本語環境設定方法 (キャラクタセット設定方法) (iandeth.) ・4.1.2. my.cnf オプション設定ファイル(公式マニュアル) 追伸: ユニコードの人は、「my.cnf」の中の[mysqld]のところに default-character-set=utf8 も追加すると、しあわせになれそうです。 (未確認) お気に入りの記事を「いいね!」で応援しよう
[macしか使えない私] カテゴリの最新記事
|