2006/12/20(水)21:03
文字化けとの戦い(PHP-mi編)
本日2件目の日記です。
前回までは図書館の本に頼っていた私ですが、とうとう自前で資料を買って参りました。
「MAMPではじめるMac OS X サーバサイドプログラミング 」
近所の本屋さんで買ったので、楽天ブックスのレビューが書けません(笑)
タイトルにMAMPとつく本は、この本しかなかったような気がします。
何せ、mac専用。売れる相手が少ないです。
(シェアが小さいって、こういうとき悲しい。)
中身を見れない人のために少し説明しますね。
この本は、MAMPで初めてPHPプログラミングをする人向けです。内容は、PHPの解説がほとんどです。データベースの解説は最後の章のみ、しかもその半分がSQLiteで、残りの半分がMySQLとphpMyAdminについての説明です。
この本では、開発環境としてOS標準のXcodeを使用しています。また、文字コードはUTF-8で統一しています。
さて。いよいよ本編。
<文字化け その3>
私もUTF-8で統一したかったので、まずは前回の本のサンプルスクリプトから、HTMLのメタタグをUTF-8に直し、PHPさんにも「UTF-8でよろしく!」と根回ししました。そして、スクリプトファイルの文字コードをEUCからUTF-8に変更して上書き保存。ちなみに私はXcodeを使った事が無く、普段からmiというエディタを使っているので、いつものmiで全ての書き換えを行いました。
ところが、このスクリプトを実行すると、今まで戦って来た「テーブルの中身の文字化け」は起こらないのですが、かわりに、あちこちに「円マークとn」が出現するのです…???
新たな敵、出現。
「円マークとn」というのは、本によると「改行コード」を表しているはずなのですが…。EUCで実行していた時には、予定通り「改行」となって機能していたはずなのに、ユニコードに変更したとたん、「改行」に変身できなくて、裸の「円マークとn」がそのまま出て来てしまったようです。
そういえば昔から、バックスラッシュと円マークは思い通りに出せなくて、どっちかを出そうとしたら、もう一方になったり、みたいな事が何度かあったっけ…。今回も、どうもそれくさい。
で、またまた検索の旅に出たところ、とても関係のありそうな記事が、今日の本の作者さん(掌田津耶乃氏)のサポートページにありました。
しかしこれ(「※半角の¥記号について」の一文)が、謎解きみたいな変な文なのです。私の環境(Safari1.3.2)から見ると、半角バックスラッシュがいっぱい書いてあるみたいなのですが…。想像なのですが、この文は、書いた時は「半角円マーク」のつもりだったものが、今の私の環境から見ると、全部「半角バックスラッシュ」になってしまっているのではないかと思います。
(そう考えないと、文章の意味が通じません。)
それで、私なりにこの文章を翻訳・解釈してみました。
つまり、「半角バックスラッシュ」が「半角円マーク」で表示されてしまう環境があると。その世界では、改行コードの事は「半角円マークとn」で表します。この本も、その書き方で印刷されています。しかし、Mac OS Xのユニコード完全対応アプリケーションに限っては、「半角バックスラッシュ」と「半角円マーク」は全く別の文字である。その場合は、改行コードは「半角円マークとn」ではなくて、「半角バックスラッシュとn」でなくてはならない。「半角バックスラッシュ」を入力するには、英数にしておいて、オプションキーと円マークを押す。
(JISキーボードなら、たぶん「へ」の右となり。)
私の文字化けも、どうやらこれが原因のようです。
UTF-8に変えた事で、「半角円マークとn」が改行コードではなくなり、そのままの姿を現して来たようです。ちなみに私が使っているエディタのmiはバージョン2.1.5で、ユニコードには完全に対応していないバージョンです。opt+円マークの入力では文字化けをし、カタカナのヌが出て来ます。
…というわけで、「半角円マークとn」を大量発生させたサンプルスクリプトは、ユニコード完全対応アプリケーションであるTextEditで開き直し、「半角円マークとn」を全て「半角バックスラッシュとn」に直す事により、正常に表示されることとなりました。
めでたし。めでたし。
余談:
TextEditですが、もともとUTF-8で保存してある文章を、ダブルクリックやD&Dで開くことができません。TextEditのファイルメニューから「開く」を行い、手動でUTF-8を指定してやらないと、自動認識ができないみたいなのです。はっきり言って、おバカだと思います。うちはまだOS10.3なのですが、10.4でも同じなのかしら?