
ショコラ
PHP キャラセットを UTF8 から EUC-JP に変更するには?
以下の2つの対応でキメマス。
①php.ini の default_charset を eucJP-win
に変更する。
②mb_ereg_replace の前に mb_regex_encoding(‘eucJP-win’) を実行する。

もっさん先輩
default_charset = EUC-JP
↑の EUC-JP と設定しがちなのですが、おそらく↓の eucJP-win を設定した方がベターです。
default_charset = eucJP-win
ここで不具合に気が付きました。mb_ereg_replace関数で機種依存文字を使って置換するとワーニングが出ました。
Warning: mb_ereg_replace(): Pattern is not valid under EUC-JP encoding in
default_charset に「eucJP-win」を設定しても、mb_regex_encoding関数での認識は「EUC-JP」みたいです。
# php -r "echo mb_regex_encoding(),PHP_EOL;";
EUC-JP
php.ini では直りませんでしたので、mb_regex_encoding関数で設定して対応しました。
mb_regex_encoding('eucJP-win');
シチュエーション
昔作った EUC-JP で書かれたコードを PHP8 に移行することになった。