よもやまチョモランマ

「SJIS」or「sjis-win」

フォームから届く管理者当てメール。
一部の文字が「?」になっていることが判明。

ちょっとググってみると、「sjis-win」にすればいいんだYO☆的な記事がちらほら・・・
【参考】PHPでcsvを吐き出すときの文字化け(環境依存文字)

なぁんだ☆とばかりに、PHPファイルの中から「SJIS」だった部分を5か所ほど「sjis-win」にしてみた。
なるほど、なおった。

・・・と思ったら、「自動返信メールが文字化けしている」との報。
一時は「スマホのOSをアプデすればいい」との結論を得たが、どうもその限りではないもよう。
アプデしたって化けるもんは化ける。
とりあえず「SJIS」に戻そう。

ところが、今度は「sjis-win」のままでも大丈夫なものもあれば、「SJIS」にしなければダメなものもあり、PHPファイルに統一感がなくなってしまった。
一度じっくり見比べてみなければ・・・

配布元のPHP工房「よくある質問」によれば、「sjis-win」は非推奨。
【参考】機種依存文字の変換処理追加の方法について

「確認画面の入力内容出力用関数」の箇所にある
$key = h($key);
の下に以下のコードを入れるとのこと。

//機種依存文字変換
$before = array(‘①’,’②’,’③’,’④’,’⑤’,’⑥’,’⑦’,’⑧’,’⑨’,’⑩’,’№’,’㈲’,’㈱’,’髙’);//変換前の文字
$after = array(‘(1)’,'(2)’,'(3)’,'(4)’,'(5)’,'(6)’,'(7)’,'(8)’,'(9)’,'(10)’,’No.’,’(有)’,’(株)’,’高’);//変換後の文字
$out = str_replace($before, $after, $out);

必要な文字は、都度ここに加えていくしかないのだろうか・・・
フォーム7つも8つもあるんだけど・・・