PHP5.2.1ぐらいから”ISO-2022-JP-MS”というのも使えるそうなので”ISO-2022-JP”,”JIS”とどう違うか試してみました。
<?php /* UTF-8からISO-2022-JP, JIS, ISO-2022-JP-MSに変換してみる */ setlocale( LC_ALL, 'ja_JP.UTF-8' ); /* ダメ元で☎ ☃なども */ $str = 'アイウエオ ㈱ ㈲ ① ② Ⅰ Ⅱ ℡ ㎏ ㎎ 﨑 髙 神 ☎ ☃'; header( 'Content-Type: text/plain; charset=ISO-2022-JP' ); printf( "%sn", 'PHP' . PHP_VERSION ); $encodings = array( 'ISO-2022-JP', 'JIS', 'ISO-2022-JP-MS' ); foreach ( $encodings as $encoding ) { printf( "%sn", $encoding . ' : ' . mb_convert_encoding( $str, $encoding, 'UTF-8' ) ); } ?>
これを実行すると以下のようになります。
PHP5.2.17 ISO-2022-JP : ????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? JIS : アイウエオ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ISO-2022-JP-MS : アイウエオ ㈱ ㈲ ① ② Ⅰ Ⅱ ℡ ㎏ ㎎ 﨑 髙 神 ? ?
ISO-2022-JPとJISの違いは半角カナが使えるかどうか。ISO-2022-JP-MSはそれに加えて機種依存文字や外字まで使えてしまう。ってことですかね。
メール送信で使えそうな気がしますが、”-MS”と付いてるだけあってWindows以外では化けると思います。
Macは試してませんが携帯宛だど髙などが絵文字か空白か「?」に化けてました。
ということで、半角カナを使われそうな携帯などで”JIS”、それ以外では”ISO-2022-JP”を使って”ISO-2022-JP-MS”は使わない方が無難。