先日、海外のHTMLエディタで作成したソースをJISに変換する作業をしていた際、なぜか半角スペースが「?」に変換されるという現象に遭遇し、数時間悩まされたので、メモしておきます。
半角スペースは、16進数で表すと「\x20」なんだけど、問題の半角スペースは「\xc2\xa0」であることがわかりました。googleで調べてみると、通称「c2a0問題」というらしく、UTF-8では半角スペースが2つあるということらしい。
とりあえず、
<?php $str=str_replace('\xc2\xa0',' ',$str); ?>
で、普通の半角スペースに変換してから処理することで問題は解消しました。