平成30/ 2018-12-19 21:45
php/ UTF8 SJIS 文字化け

​​
という自動改行文字コードが、UTF8で含まれており、SJIS変換すると、文字化けた。

便利なツールがあって、それは
10進数数値文字参照に変換 文字列に変換 16進数数値文字参照に変換
http://www.benricho.org/moji_conv/15.html

と、
数値文字参照変換スクリプト
http://nelii.net/num.html


これで、文字化けする原因を特定できる。
UTF8では文字化けしていない文字列をコピーし、上記で文字参照すると、

​​ とか見慣れない文字コード(文字参照)が確認できる。
これをPHPで削除したい場合は以下のようにすればいい。



            // 自動改行文字は文字化け対象なので削除
            $str = $str = mb_convert_encoding("​", 'UTF-8', 'HTML-ENTITIES');
            $val = preg_replace("/{$str}/u", "", $val);

            // 少 の機種依存文字を置換。
            $str = $str = mb_convert_encoding("尐", 'UTF-8', 'HTML-ENTITIES');
            $val = preg_replace("/{$str}/u", "少", $val);

            $val = mb_convert_encoding($val, "sjis-win", "utf8");

echo $val;