空白文字
2種類の使われ方をしていることに注意が必要
U+0020 SPACE そのもの
印字上、「空白」に見える文字すべて(制御文字を含む場合と含まない場合あり)
文字の選定は実装依存で、完全網羅しているわけではない点に注意。
何が問題か?
印字されないため、存在に気が付かない。
エラーなどが起こっても見かけ上正しく見えるため、原因が分からない。
期待しないマッチ、アンマッチが発生する。
文脈によって「意味のある空白」と「意味のない空白」があるが、場当たり的に判別するとおかしなことになる。
例えば空白(U+0020)区切りを期待している場合、U+00A0 (Non Break Space)で区切られたら困る。
実運用としてはどうなるのか?
印字上は幅以外は気にしなくてもよい。
マッチングで問題になる場合は、どうするのかをポリシーで決定しておく。
規約で無闇な使用をしないように縛っておくのがよい。
入力可能な文字について制約する。
制御文字の混入は禁止する。
Unicode 上、空白とみなされる文字は何か?
Unicode 文字プロパティ (Unicode character property) で空白とされているものが空白。
Separator (Z)の space (Zs) が一般的に使われる。
Zs には制御コードを含まない。
UTF-8 では、U+0100 以上の文字は1バイトでは済まないため、複数バイトで判定する必要がある。