手軽屋
ツール一覧

ホワイトスペース文字の全種類

目に見えない「空白っぽい文字」は数十種類あります。MDNとUnicode仕様に沿って分類します。

参照した一次情報

3つのカテゴリ

ホワイトスペース文字は、その性質から大きく3つに分けられます。

主要ホワイトスペース一覧

コード名称特徴・混入元
U+0020SPACE(半角)普通の半角空白
U+3000IDEOGRAPHIC SPACE(全角)日本語入力中の変換キー由来
U+0009TABExcel・コードエディタ由来
U+000ALF(改行)UNIX標準改行
U+000DCR旧Mac/Windows CRLFの一部
U+00A0NO-BREAK SPACEWeb由来。改行禁止だが見た目は空白
U+200BZERO WIDTH SPACE完全に不可視。SNS・コピペで混入
U+200DZERO WIDTH JOINER絵文字結合に使用
U+FEFFBOM(バイト順マーク)UTF-8の先頭やExcel CSV由来
U+2028LINE SEPARATORWord・InDesign由来の改行

CSS white-spaceプロパティの扱い

MDN CSS white-spaceプロパティは「ホワイトスペースをどう扱うか」を制御します。デフォルト値normalでは、連続するホワイトスペースが1つにまとめられ、改行はテキストを自動折り返しする条件として扱われます。

つまりブラウザは「見た目では空白文字を整理してくれる」ものの、コピー時には元のホワイトスペース文字が全てそのままコピーされます。これが「表示は綺麗なのにコピペすると変な空白が混じる」原因。

よくあるトラブル

UnicodeのWhite_Spaceプロパティ

Unicode仕様には「White_Space」というプロパティが定義されており、PropList.txtで25種類のホワイトスペース文字がリストアップされています。 U+0009からU+000Dの制御文字、U+0020半角空白、U+0085 NEL、U+00A0 NBSP、U+1680 OGHAM SPACE、U+2000-U+200Aの各種「空白文字」、U+2028 LS、U+2029 PS、U+202F NARROW NBSP、U+205F MMSP、U+3000全角空白。

このプロパティに基づき、JavaScriptの/\s/正規表現やString.prototype.trim()はこれらの文字をホワイトスペースとして扱います。

ゼロ幅文字は別カテゴリ

UnicodeのWhite_Spaceプロパティには、U+200B(ZERO WIDTH SPACE)やU+200D(ZWJ)、U+FEFF(BOM)は含まれません。 これらは「ホワイトスペース」ではなく「不可視のフォーマット文字」として別カテゴリ扱いです。

したがって普通のtrim()では削除されず、専用の除去処理が必要になります。 本ツールはこれらを別カテゴリとして個別に削除対象に含めています。

本ツールでの処理対象

関連ツール・記事