機種依存文字の変換

DB:EUC-JP
XMLUTF-8
PHPEUC-JP
mbstring.encoding_translation = Off

この場合の機種依存文字対応する為に

mb_convert_encoding($str,"UTF-8","eucjp-win");

ここまでは思いついてました。
ただし、IBM拡張文字は?になってしまう。
そこで、機種依存文字をパターン化し、先に変換しておいたものをUTF-8にすればよいかと。

mb_regex_encoding("eucjp-win");
$befor = '変換前 機種依存パターン';
$after = '変換後 機種依存パターン';
mb_convert_encoding(mb_ereg_replace($befor,$after,$str),"UTF-8","eucjp-win");

※mb_ereg_replaceはmb_str_replaceの方がいいかも。

みたいな形である程度機種依存になるであろう文字をパターン化して対応。


あくまでパターン化したものだけは変換可能というだけで、完全対応ではないし、入力したものも勝手に書き換えてしまうという状態に。

あれこれ調べているうちに、こんな方法を見つけました。

mb_convert_encoding(mb_convert_encoding($str,"sjis-win","EUC-JP"),"UTF-8","sjis-win");

とすれば、IBM拡張文字もUTF-8に変換可能になりました〜!