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;