C2A0文字コードはUTF-8の半角スペース ホームページ制作 | 墨田区

C2A0文字コードはUTF-8の半角スペース

LINEで送る
Pocket

C2A0文字コードはUTF-8の半角スペースのこと です。
とある案件で、データベース上に文字化けした値があったので、テキストに貼り付けてみるとスペースにしか見えませんでした。
C2A0は半角スペースにしか見えない

スペースにしか見えないと思いつつ、文字化けする以上は何かあるだろうと文字コードを確認してみると、あれ? C2A0 と出ましたね。
スペースは20じゃなくてC2A0だった

むむむ、半角スペースは 20 のはずだが C2A0 とはこれいかに・・?




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・


調べていくと、どうやら C2A0 は UTF-8 の半角スペース というか NO-BREAK SPACE(ノーブレークスペース) というもので、HTMLでいう   と同様のものでした。
文字通りそこでは改行しないスペースという意味で、通常の半角スペースとは別物です。

利用者に問い合わせたところ、どうやらどこかのサイトからコピペしたものがデータベース上に登録されたようですね。通常の半角スペースに置換したところ、特に文字化けすることもなくなりましたので、その方法をご紹介します。

Javaで C2A0 を通常の半角スペース(20)に置換

Javaで C2A0 を通常の半角スペース(20)に置換します。
正規表現を使って、こんな感じのソースを書いてください。
※value 変数には C2A0 を含んだ文字列をセット

value.replaceAll("[\\xc2\\xa0]", " ");

実行結果です。見た目に変化はありませんね。
C2A0を20に置換しても見た目に変化はない

文字コードを確認してみると、半角スペース(20)に置換されたことが確認できました。
半角スペース(20)に置換された

ちなみに、PHPで C2A0 を通常の半角スペース(20)に置換する方法はこんな感じです。

$content = str_replace( "\xc2\xa0", " ", $content );

おつかれさまでした。

LINEで送る
Pocket

この記事がお役に立ちましたら シェア をお願いいたします。

コメントを残す

コメント(必須)

お名前 (必須)
メールアドレス
(アドレスは公開されません)

Trackback URL