Unicode'da neden bu kadar çok boşluk ve satır sonu var?


19

Unicode'da belki 50 boşluk var

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

ve 6 satır sonu

sadece CRLF, LF, CR değil, aynı zamanda NEL (U + 0085), PS (U + 2029) ve LS (U + 2028).

Belki boşlukların ve PS'nin ("Paragraf ayırıcı") çoğunu anlayabilirdim, ancak "Sonraki Satır" ve "Satır ayırıcı" ne işe yarar?

Her şey, herkesin kendi alanlarını istediği ve liderlere her biri bir satır sonu verilen çok büyük bir komite tarafından icat edilmiş gibi görünüyor. Ama cidden, programlama diliniz desteklemediğinde (veya örneğin Java'nın yaptığı gibi yanlış olduğunda) bununla nasıl başa çıkıyorsunuz?


1
Java bunu nasıl "yanlış" yapar?
Billy ONeal


2
@maaartinus: (Java'yı her şeyin savunduğuna inanamıyorum) Java'nın karakter sınıfları, belirli bir karakter kümesine uygulanacak şekilde belgelenmiştir. Unicode, bu karakter sınıflarına sığacak gibi görünen daha fazla karakter sağlar, ancak Unicode normal ifade dillerini tanımlamaz; sadece karakter kodlamaları. Java, özelliklerine göre tamamen doğru davranır - yani tipik boşluklarla eşleşir. Unicode standardında boş alan olarak görülebilecek her şeyle eşleşmesini istiyorsanız, bunu kendiniz yazmanız gerekir.
Billy ONeal

2
Bilgi için teşekkürler. Ancak, Pattern.compile2010geçen yıl tanımına göre çalışan normal ifadeleri döndüren bir yöntem oluşturmakta serbesttirler . Ayrıca Pattern.compileLatestUTS, anlamın yeni spesifikasyona göre değişeceğini açıkça belirten bir yöntem oluşturmakta serbesttirler .
maaartinus

2
Java gibi görünüyor sonunda yaptığı düzeltme / geriye dönük uyumluluk sorunları önlemek için bir opt-in bayrağı kullanarak, düzenli ifade uygulanmasını modernize: stackoverflow.com/a/4307261/1172352
peterflynn

Yanıtlar:


15

Belki boşlukların ve PS'nin ("Paragraf ayırıcı") çoğunu anlayabilirdim, ancak "Sonraki Satır" ve "Satır ayırıcı"

NEXT LINE (U + 0085) genellikle EBCDIC sistemlerinde yeni satır karakteri olarak kullanılır (0x15 olarak). CR + LF gibi, ama bir karakter olarak.

Hat ayırıcı (2028 U +) ve paragraf ayırıcı (2029 U +) bölümünde 5.8 açıklanmıştır Unicode standardına HTML bir düz metin versiyonu olarak tarif <br>ve <p>"yeni satır" bu fonksiyonları disambiguate için. Ancak pratikte, bu karakterler fazla kullanılmıyor.


1
İyi bir açıklama, ancak benim için anlamı: komite lideri başına bir satır sonu.
maaartinus

5
@maaartinus Hayır. Önceki tüm çelişkili standartlar için bir satır sonu ve Unicode standardından 2 tane daha belirsiz.
Milind R

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.