文字コードで最近感じていること
PHPと文字コードの問題にはいつも悩まされる。マニュアルを見ると、やはりいまだに内部エンコーディングとしてシフトJISは扱えないようだ。Zend Multibyteが有効になっていれば大丈夫、という記述を昔よく見たけど、そういえば最近はあまり見ない。でも、やっぱりシフトJISでPHPを記述するのはダメなんだろう。それでも世の中はシフトJISのPHPプログラムだらけなのだが・・・。
まぁ、自分で記述する際はプログラムはUTF-8で書くことにしている。だから制約がない場合は、基本的にプログラム、データベース、出力の全てをUTF-8で統一している。しかし出力をシフトJISにしないといけない場合がある。携帯対応とか、スキルの低いコーダー(シフトJIS以外はわからない)に対応してあげるときとか、だ。
そんなときは、管理画面のみUTF-8で通すなどといったことはやめたほうがよさそうだ。フロントエンドがシフトJISなら管理画面もシフトJISのほうが無難。でも内部エンコーディングはUTF-8。で、やるべき作業は、mb_convert_encoding。で、今更ながらこの関数はちゃんと理解して使うべきだと思っている。もちろんこの関数のみならずマルチバイト関数そのものを理解して使わないといけない。
マルチバイト関数に関する設定項目にscript_encodingやinternal_encodingがあるがまずはこの意味をしっかりと理解すべき。その上でSJISよりもsjis-win、EUC-JPよりもeucjp-win。スキルが低くてもマニュアルに目を通しておくべきだし、文字コードのことは理解していなくても後者を使うべきだろう(と思っているだけで根拠を言えるほどスキルは高くない自分がいる)。
過去の遺産はそうはなっていない。そのときは問題自体はある程度理解していたんだけれど、それでよし、としていた。どうしようか。
放置だな。