日本語文字コードは最近でこそUTFが増えていますが、Windows系はシフトJIS、UNIX系はEUC-JPを使ってきた歴史があります。またメール送信の文字コードはJIS(ISO-2022-JP)が用いられます。
PHPで文字コード変換する関数は、mb_convert_encoding(変換したい文字列、変換後の文字コード、[変換前の文字コード])です。例えば以下のように記述します。
$str = mb_convert_encoding($str, "UTF-8", "SJIS")
変換前の文字コードは省略できるので、引数が変換後、変換前という一見変な順序に並んでいます(ウェブテコでそんな話が出ました)。また文字コードも、シフトJISはマニュアルでは「SJIS」と書いてありますが、「Shift-JIS」「Shift_JIS」でもシフトJISとみなして動作するようです。(管理者の手元のバージョンではそうでした。)
変換前の文字コードを省略しても処理してくれる点(文字化けの可能性があるので、文字コードが既知なら指定しておくべきでしょう)や、文字コード表記のゆれを吸収してくれる点は、いかにもPHP的という感じがしますね。この辺をどう考えるかで、PHPの評価も変わるのでしょう。ユーザーフレンドリーと考えることもできますし、いい加減なスクリプトが動作して危険だ、という意見もあるでしょう。文字列の変換も参考になるかもしれません。
楽天で検索
PHP逆引きレシピ Programmer’s recipe 鈴木憲治 翔泳社
3024円
啓文社
Supported by 楽天ウェブサービス