यूनिकोड में इतने सारे स्थान और रेखाएं क्यों हैं?


19

यूनिकोड में शायद 50 स्थान हैं

\ 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

और 6 लाइन टूट जाती है

न केवल CRLF, LF, CR, बल्कि NEL (U + 0085), PS (U + 2029) और LS (U + 2028)।

शायद मैं अधिकांश रिक्त स्थान और PS ("पैरा विभाजक") को समझ सकता था, लेकिन "नेक्स्ट लाइन" और "लाइन सेपरेटर" क्या अच्छे हैं?

यह सब एक बहुत बड़ी समिति द्वारा आविष्कार किया गया लग रहा है, जहां हर कोई अपनी खुद की जगह चाहता था और नेताओं को एक-एक पंक्ति को तोड़ने की अनुमति दी गई थी। लेकिन गंभीरता से, आप इससे कैसे निपटते हैं जब आपकी प्रोग्रामिंग भाषा इसका समर्थन नहीं करती है (या यह गलत है जैसे कि जावा करता है)?


1
जावा इसे "गलत तरीके से" कैसे करता है?
बिली ओनली

लगभग पूरी तरह से, एस। stackoverflow.com/questions/4304928/…
maaartinus

2
@maaartinus: (मुझे विश्वास नहीं हो रहा है कि मैं सभी चीजों के जावा का बचाव कर रहा हूं) जावा के चरित्र वर्ग को वर्णों के एक विशिष्ट सेट पर लागू करने के लिए प्रलेखित किया गया है। यूनिकोड अधिक वर्णों की आपूर्ति करता है, जो देखने में ऐसा लगता है कि वे इन वर्ण वर्गों में फिट हैं, लेकिन यूनिकोड नियमित अभिव्यक्ति भाषाओं को परिभाषित नहीं करता है; केवल चरित्र एन्कोडिंग। जावा यह कल्पना के अनुसार पूरी तरह से सही ढंग से व्यवहार करता है - जो कि विशिष्ट व्हाट्सएप से मेल खाता है। यदि आप चाहते हैं कि यह यूनिकोड मानक की हर चीज से मेल खाए जो कि खाली जगह के रूप में दिखाई दे सकती है, तो आपको खुद को लिखना होगा।
बिली ओनेल

2
जानकारी के लिए Thx। हालाँकि, लेकिन वे Pattern.compile2010पिछले वर्षों की परिभाषा के अनुसार काम करने वाली रेगीज़ लौटाने की विधि बनाने के लिए स्वतंत्र हैं । वे एक ऐसी विधि बनाने के लिए भी स्वतंत्र हैं Pattern.compileLatestUTSजो स्पष्ट रूप से बताएगी, कि नए विनिर्देश के अनुसार अर्थ बदल जाएगा।
Maaartinus 14

2
जावा की तरह दिखता है अंततः किया : ठीक / उनके regex कार्यान्वयन के आधुनिकीकरण, पश्च संगतता समस्याओं को रोकने के लिए एक विकल्प के रूप में ध्वज का उपयोग कर stackoverflow.com/a/4307261/1172352
peterflynn

जवाबों:


15

हो सकता है कि मैं ज़्यादातर स्पेस और PS ("पैरा सेपरेटर") को समझ सकता था, लेकिन "नेक्स्ट लाइन" और "लाइन सेपरेटर" के लिए क्या अच्छा है

NEXT LINE (U + 0085) अक्सर EBCDIC सिस्टम (0x15 के रूप में) पर नई लाइन वर्ण के रूप में उपयोग किया जाता है। यह सीआर + एलएफ की तरह है, लेकिन एक चरित्र के रूप में।

LINE SEPARATOR (U + 2028) और PARAGRAPH SEPARATOR (U + 2029) को यूनिकोड मानक की धारा 5.8 में समझाया गया है , जो उन्हें "न्यूलाइन" के इन कार्यों को अस्वीकार करने के लिए HTML के एक सादे-पाठ संस्करण के रूप में वर्णन करता है <br>और <p>। लेकिन व्यवहार में, इन पात्रों का ज्यादा इस्तेमाल नहीं होता है।


1
अच्छी व्याख्या, हालांकि मेरे लिए इसका मतलब है: समिति के नेता प्रति एक लाइन ब्रेक।
माॅर्टिनस

5
@aaartinus नोप। एक पंक्ति पिछले सभी परस्पर विरोधी मानकों को तोड़ती है, और यूनिकोड मानक से 2 अधिक अस्पष्ट हैं।
मिलिंद आर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.