Utf-8 कोलेशन में, 11- कम है तो 1- क्यों?


7

मैंने पाया कि ASCII में सॉर्ट परिणाम:

स्रोत फ़ाइल test:

1-
11-
1-a
11-a

ASCII का उपयोग करके सॉर्ट करें:

$ LANG=en_US.ascii sort test
1-
1-a
11-
11-a

और UTF-8 का उपयोग करना:

$ LANG=en_US.utf8 sort test
1-
11-
11-a
1-a

मुझे लगता है कि यह इतना सहज है, और यह शब्दकोष नहीं है।

क्या चरित्र '-' ( 002d) हमेशा कम नहीं होता है [0-9]( 0030-0039)? UTF-8 कोलेशन में सामान्य नियम क्या है?

और इसे कैसे दरकिनार किया जाए, बस -कम करें और फिर [0-9]लिनक्स में UTF-8 के लिए अन्य पात्रों को अपरिवर्तित रखें? (तो यह का परिणाम को प्रभावित करता है सकते हैं ls --sort, sortआदि)


3
आप इसे कहाँ देख रहे हैं? sortजीएनयू कोरुटिल्स से 8.5 के साथ , "1-" हमेशा "11-" से पहले आता है, किसी भी स्थान के साथ।
ग्रैविटी

यह मेरी गलती है। मैंने तार काट दिए हैं। मैंने उदाहरण बदल दिया कृपया पुनः प्रयास करें।
शी जे

जब मैं ज़िप फाइलें खोलता हूं तो मुझे यह दिखाई देता है। मैं इसे Win7 में छवियों के साथ देखता हूं: 11, 12, 13, ..., 19, 1.
वोल्फकैप'08

जवाबों:


6

पहले पास में माइनस साइन को नजरअंदाज किया जाता है। तो सबसे पहले पारित प्रकार 1, 11, 1a, 11a1<के बाद से a, आपको 11a< 1aऔर इस प्रकार 11-a< मिलता है 1-a

-एक चर महाविद्यालय तत्व है , जिसका अर्थ है कि आप / कार्यान्वयनकर्ता इसे अनदेखा करना चुन सकते हैं। Glibc कार्यान्वयन स्पष्ट रूप से ऐसा करता है। व्यवहार में, अधिकांश विराम चिह्न इस व्यवहार से प्रभावित होते हैं।

आप यूनिकोड कोलाज़ एल्गोरिथ्म में gory विवरण पर पढ़ सकते हैं , modulo इसे कैसे लागू करता है।


फिर, क्या इस अज्ञान को दबाने के लिए ग्लिबक का कोई विन्यास है?
शी जे 17लेई

यह नही है कि मैं जानता हूँ।
पीटर एइसेंट्राउट

0

जैसा कि पीटर आइसेनट्राट द्वारा समझाया गया है, यह इसलिए है क्योंकि यूनिकोड के लिए सॉर्टिंग एल्गोरिथ्म -सॉर्ट करते समय अनदेखा करता है ।

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

इसलिए वास्तविक रूप से, आपको या तो अपने लोकेल को ASCII में बदलना होगा (यदि आपको यूनिकोड वर्ण की आवश्यकता नहीं है), या एक प्रोग्राम का उपयोग करके सॉर्ट करें जहां आप सीधे सॉर्टिंग नियमों को कॉन्फ़िगर कर सकते हैं।

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