UTF-8の半角スペースに悩まされる

先日、海外のHTMLエディタで作成したソースをJISに変換する作業をしていた際、なぜか半角スペースが「?」に変換されるという現象に遭遇し、数時間悩まされたので、メモしておきます。

半角スペースは、16進数で表すと「\x20」なんだけど、問題の半角スペースは「\xc2\xa0」であることがわかりました。googleで調べてみると、通称「c2a0問題」というらしく、UTF-8では半角スペースが2つあるということらしい。

とりあえず、

<?php
 $str=str_replace('\xc2\xa0',' ',$str);
 ?>

で、普通の半角スペースに変換してから処理することで問題は解消しました。

 

投稿日:
カテゴリー: php