機種依存文字の変換
DB:EUC-JP
XML:UTF-8
PHP:EUC-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");