javascriptで の空白がマッチしない

htmlで、文字中で改行させて欲しくないスペースとして というものがあります。
このnbspは文字コードだと160になります。

という事は16進だと0xA0,二進数だと”1010 0000″です。
一方普通のスペースは,0x20です。


両者の二進数表記を比べると最上位ビットが違うだけという事が分かります。

二進表記     内容
----------  -------------
10100000    nbsp
00100000    普通のスペース



また、htmlでは文字コード指定での指定も出来るので、 は&160;とも表記可能です。


ちなみに、nbspによる空白はブラウザで見ると普通の空白に見えます(当たり前の事ですが…)。
ですが、前述のように文字コードが空白とは異なっているため、javascriptで以下の様なコードを書いてもマッチしてくれません。

data.indexOf( ' ' );



javasciptでは、先頭に”\x”をつけることで文字を16進表記できるため、このような場合は下記のコードでマッチさせる事が出来ます。

data.indexOf( '\xa0' );




firebugで見ても、普通のスペースにしか見えず、分かり辛いバグになりがちなので注意が必要です。

文字コード「超」研究

関連記事

One Response to “javascriptで の空白がマッチしない”

  1. jun より:

    この問題で1時間くらい悩んでいたので、大変助かりました!!
    ありがとうございますm(_ _)m

コメントを残す

メールアドレスが公開されることはありません。