का उपयोग कर कोलेटर के साथ गलत सॉर्टिंग। मैं Locale.SIMPLIFIED_CHINESE का उपयोग कर चीनी में देशों की एक सूची ऑर्डर करने का प्रयास कर रहा हूं, ऐसा लगता है कि यह पिनयिन (फोनेटिक वर्णमाला का उपयोग करने का आदेश देता है, जो अक्षरों को उनके लैटिन संवाददाता संयोजन के अनुसार आदेश दिया जाता है , ए से ज़ेड तक)।Locale.SIMPLIFIED_CHINESE
लेकिन खराब होने पर मुझे कुछ मामलों में मिला है। उदाहरण के लिए:
- '中' चरित्र zhong1
- '梵' चरित्र fan4
है सही क्रम 梵 होना चाहिए < 中, लेकिन इसके बजाय यह अन्य तरीके से आदेश दिया जाता है। इस स्निपेट के
String[] characters = new String[] {"梵", "中"};
List<String> list = Arrays.asList(characters);
System.out.println("Before sorting...");
System.out.println(list.toString());
Collator collator = Collator.getInstance(Locale.SIMPLIFIED_CHINESE);
collator.setStrength(Collator.PRIMARY);
Collections.sort(list, collator);
System.out.println("After sorting...");
System.out.println(list.toString());
परिणाम हैं:
Before sorting...
[梵, 中]
After sorting...
[中, 梵]
गहरी जा रहे हैं, मुझे लगता है कि जावा Locale.SIMPLIFIED_CHINESE साथ लागू होता है नियम नहीं मिले। आप अगले छवि में पा सकते हैं: http://postimg.org/image/4t915a7gp/full/ (ध्यान 中 के बाद यह है कि 梵)
मैंने पहले < 口 < 口 < 口 < 口 < 口 कि मैं लाल रंग में हाइलाइट एहसास हुआ, सभी पात्रों को उनके लैटिन संवाददाता के अनुसार आदेश दिया जाता है संयोजन, ए से ज़ेड तक। हालांकि, < 口 < 口 < 口 < 口 < 口 संकेत, वर्णों की रचना द्वारा वर्णों का आदेश दिया जाता है। उदाहरण के लिए, यदि सभी पात्रों का एक ही भाग (आमतौर पर चरित्र का बायां हिस्सा) होता है, तो उन्हें ए से ज़ेड नियम के अनुसार नहीं समझा जाता है।
इसके अलावा, सभी पात्रों < 口 < 口 < 口 < 口 < के बाद 口 कम आम चीनी अक्षरों कर रहे हैं। तो, 梵 中 से कम आम चरित्र है, इसलिए इसे < 口 < 口 < 口 < 口 < 口 के बाद रखा गया है।
मुझे आश्चर्य है कि यह निर्णय जानबूझकर क्यों है। लेकिन इसके परिणामस्वरूप गलत सॉर्टिंग होती है। मुझे नहीं पता कि इसके लिए समाधान कैसे ढूंढें।
धन्यवाद आपके समय के लिए बहुत कुछ!
आप icu4j का उपयोग कर की कोशिश की? – fge
मैंने pinyin4j की कोशिश की है, और उनका ऑर्डर अच्छा है। icu4j अभी तक कोशिश नहीं है। लेकिन मेरा सवाल यह है कि ओरेकल उन नियमों के साथ क्यों क्रमबद्ध है, शायद यह रिपोर्ट करने के लिए एक बग है, या शायद पिनइन सम्मेलनों के साथ जावा एपीआई का उपयोग करने का एक और तरीका है। मेरी कंपनी में व्यवहार्यता के कारण नई पुस्तकालयों को जोड़ना मुश्किल है। आपके समर्थन के लिए धन्यवाद! – elegarpes