C2A0文字コードはUTF-8の半角スペース
C2A0文字コードはUTF-8の半角スペースのことです。
とある案件で、データベース上に文字化けした値があったので、テキストに貼り付けてみるとスペースにしか見えませんでした。
スペースにしか見えないと思いつつ、文字化けする以上は何かあるだろうと文字コードを確認してみると、あれ? C2A0 と出ましたね。
むむむ、半角スペースは 20 のはずだが C2A0 とはこれいかに・・?
ここでは C2A0文字コードについて解説 します。
C2A0はノーブレークスペース
調べていくと、どうやら C2A0 は UTF-8 の半角スペース というか NO-BREAK SPACE(ノーブレークスペース) というもので、HTMLでいう アンパサンド と同様の特殊文字でした。
文字通りそこでは改行しないスペースという意味で、通常の半角スペースとは別物です。
利用者に問い合わせたところ、どうやらどこかのサイトからコピペしたものがデータベース上に登録されたようですね。通常の半角スペースに置換したところ、特に文字化けすることもなくなりましたので、ここからは JavaでC2A0を通常のスペースに置換する方法 を紹介します。
JavaでC2A0を通常の半角スペース(20)に置換
Javaで C2A0 を通常の半角スペース(20)に置換します。正規表現を使って、こんな感じのソースを書いてください。
value 変数には C2A0 を含んだ文字列をセット
value.replaceAll("[\xc2\xa0]", " ");
実行結果です。見た目に変化はありませんね。
文字コードを確認してみると、半角スペース(20)に置換されたことが確認できました。
PHPでC2A0を通常の半角スペース(20)に置換
ちなみに、PHPで C2A0 を通常の半角スペース(20)に置換する方法はこんな感じです。
$content = str_replace( "xc2xa0", " ", $content );
おつかれさまでした。