ユニコードになぜそんなに多くのスペースと改行があるのですか?


19

Unicodeにはおそらく50個のスペースがあります

\ u0009 \ u000A- \ u000D \ u0020 \ u0085 \ u00A0 \ u1680 \ u180E \ u2000- \ u200A \ u2028 \ u2029 \ u202F \ u205F \ u3000] [\ u0009 \ u000A- \ u000D \ u0020 \ u0085 \ u0085 \ u00A0 \ u1680 \ u180E \ u2000- \ u200A \ u2028 \ u2029 \ u202F \ u205F \ u3000

および6つの改行

CRLF、LF、CRだけでなく、NEL(U + 0085)、PS(U + 2029)、LS(U + 2028)もあります。

スペースとPS(「段落区切り記号」)のほとんどを理解できたかもしれませんが、「次の行」と「行区切り記号」は何に役立つのでしょうか?

それはすべて非常に大きな委員会によって発明されたように見えます。そこでは誰もが自分のスペースを望み、リーダーはそれぞれ1行の改行を許可されました。しかし、真剣に、プログラミング言語がサポートしていない(またはJavaのように間違っている)場合、どのように対処しますか?


1
Javaはどのように「間違って」行うのですか?
ビリーONeal


2
@maaartinus:(Javaのすべてを防御しているとは信じられない)Javaの文字クラスは、特定の文字セットに適用されるように文書化されています。Unicodeは、これらの文字クラスに収まるように見えるより多くの文字を提供しますが、Unicodeは正規表現言語を定義しません。文字エンコーディングのみ。Javaは仕様に従って完全に正しく動作します。つまり、典型的な空白に一致します。空のスペースとして表示される可能性のあるUnicode標準のすべてに一致させたい場合は、自分で作成する必要があります。
ビリーONeal

2
情報のThx。ただし、Pattern.compile2010昨年の定義に従って動作する正規表現を返すメソッドを自由に作成できます。またPattern.compileLatestUTS、新しい仕様に従って意味が変わることを明示的に述べるメソッドを自由に作成できます。
-maaartinus

2
Javaは最終的に、後方互換性の問題を防ぐためにオプトインフラグを使用して正規表現の実装を修正/近代化しように見えます:stackoverflow.com/a/4307261/1172352
peterflynn

回答:


15

スペースとPS(「段落区切り」)のほとんどを理解できたかもしれませんが、「次の行」と「行区切り」は何に役立つのでしょうか

NEXT LINE(U + 0085)は、多くの場合、EBCDICシステムの改行文字(0x15)として使用されます。CR + LFに似ていますが、1文字です。

LINE SEPARATOR(U + 2028)と段落分離器(U + 2029)のセクション5.8で説明されているUnicode標準 HTMLのプレーンテキストバージョンとしてそれらを説明し、<br>そして<p>、「改行」のこれらの機能を明確にします。しかし実際には、これらのキャラクターはあまり使用されません。


1
良い説明ですが、私にとっては、委員会のリーダーごとに1つの改行が必要です。
maaartinus

5
@maaartinusいや。以前のすべての競合する標準ごとに1つの改行、およびUnicode標準からの2つの明確なもの。
Milind R 14

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.