না, এগুলি তাদের সমতুল্য হিসাবে বিবেচনা করে না, তাদের কেবল একই প্রাথমিক ওজন রয়েছে। যাতে প্রথম অনুমানের মধ্যে, তারা একই সাজান।
আপনি যদি কোনও জিএনইউ সিস্টেমে / ইউএসআর / শেয়ার / আই 18 এন / লোকেল / আইসো 14651_t1_common (বেশিরভাগ লোকেলের ভিত্তিতে হিসাবে ব্যবহৃত হয়) তাকান, তবে আপনি দেখতে পাবেন:
<U0065> <e>;<BAS>;<MIN>;IGNORE # 259 e
<U025B> <e>;<PCL>;<MIN>;IGNORE # 287 ɛ
<U0045> <e>;<BAS>;<CAP>;IGNORE # 577 E
e
, ɛ
এবং E
একই প্রাথমিক ওজন e
এবং E
একই গৌণ ওজন থাকে, কেবল তৃতীয় ওজন তাদের আলাদা করে।
স্ট্রিংগুলির সাথে তুলনা করার সময়, sort
( strcoll()
স্ট্র্যান্ডের তুলনা করার জন্য স্ট্যান্ডার্ড লিবিসি ফাংশন ব্যবহার করা হয়) সমস্ত অক্ষরের প্রাথমিক ওজন তুলনা করে শুরু হয় এবং কেবল দ্বিতীয় ওজনের জন্য যান যদি স্ট্রিংগুলি প্রাথমিক ওজনের সাথে সমান হয় (এবং এইভাবে অন্যান্য ওজনগুলির সাথে) ।
এভাবেই প্রথম অনুমানের ক্ষেত্রে বাছাইয়ের ক্রমে কেসটিকে উপেক্ষা করা হবে বলে মনে হয়। Ab
মধ্যে প্রকারের aa
এবং ac
কিন্তু Ab
সাজানোর আগে বা পরে করতে পারেন ab
ভাষা নিয়ম উপর নির্ভর করে (কিছু কিছু ভাষায় আছে <MIN>
সামনে <CAP>
ব্রিটিশ ইংরেজি, কিছু মত <CAP>
সামনে <MIN>
এস্তোনীয় মত)।
যদি e
হিসাবে একই সাজানোর ক্রম ছিল ɛ
, printf '%s\n' e ɛ | sort -u
শুধুমাত্র এক লাইন ফিরে আসবে। তবে <BAS>
আগের মতোই <PCL>
, e
একা আগেও সাজানো ɛ
। eɛe
পরে প্রকারের EEE
(সেকেন্ডারি ওজন এ) যদিও EEE
প্রকারের পর eee
(যা আমরা তৃতীয় ওজন পর্যন্ত যেতে হবে)।
এখন যদি আমার সিস্টেমে গ্লাবসি ২.২27 রয়েছে, আমি চালাব:
sed -n 's/\(.*;[^[:blank:]]*\).*/\1/p' /usr/share/i18n/locales/iso14651_t1_common |
sort -k2 | uniq -Df1
আপনি লক্ষ্য করবেন যে বেশ কয়েকটি অক্ষর রয়েছে যা ঠিক একই 4 টি ওজনের সাথে সংজ্ঞায়িত করা হয়েছে। বিশেষত, আমাদের এর মতো ওজন রয়েছে:
<U01DD> <e>;<PCL>;<MIN>;IGNORE
<U0259> <e>;<PCL>;<MIN>;IGNORE
<U025B> <e>;<PCL>;<MIN>;IGNORE
এবং যথেষ্ট নিশ্চিত:
$ printf '%s\n' $'\u01DD' $'\u0259' $'\u025B' | sort -u
ǝ
$ expr ɛ = ǝ
1
এটি GNU libc লোকেলগুলির বাগ হিসাবে দেখা যায়। অন্যান্য বেশিরভাগ সিস্টেমে, লোকেলগুলি নিশ্চিত করে যে শেষ পর্যন্ত সমস্ত পৃথক অক্ষরের আলাদা বাছাই ক্রম রয়েছে। গনুহ লোকেল, এটি, এমনকি খারাপ হিসাবে অক্ষর আছে যা একটি সাজানোর ক্রম হবে না এবং একই বাছাই শেষ সহস্র (ভঙ্গ মত সমস্যার সমস্ত প্রকারের ঘটাচ্ছে comm
, join
, ls
বা অ- নির্ণায়ক আদেশ থাকার globs ... ), অত: পর সুপারিশ ব্যবহার LC_ALL=C
যারা বিষয় প্রায় কাজ করতে ।
মন্তব্যগুলিতে @ নিনজালজ দ্বারা উল্লিখিত হিসাবে, আগস্ট 2018 এ প্রকাশিত গ্লিবসি ২.২৮ এএফএইচএস যদিও এর সামনের কিছু উন্নতি নিয়েছে, এখনও কিছু চরিত্র বা মিলনকারী উপাদানগুলি একই ধরণের বাছাইয়ের ক্রম দিয়ে সংজ্ঞায়িত হয়েছে। উবুন্টুতে 18.10 glibc 2.28 এবং একটি en_GB.UTF-8 লোকালেতে।
$ expr $'L\ub7' = $'L\u387'
1
(কেন ইউ +00 বি 7 কে কেবলমাত্র ? L
/ l
!! এর সাথে সংযুক্ত হলে ইউ +0387 এর সমতুল্য বিবেচনা করা হবে ?)।
এবং:
$ perl -lC -e 'for($i=0; $i<0x110000; $i++) {$i = 0xe000 if $i == 0xd800; print chr($i)}' | sort > all-chars-sorted
$ uniq -d all-chars-sorted | wc -l
4
$ uniq -D all-chars-sorted | wc -l
1061355
(এখনও 1 মিলিয়নেরও বেশি অক্ষর (ইউনিকোড পরিসরের 95%, ২.২ in-এর 98% থেকে কম) অন্য অক্ষরের মতো বাছাই করার ক্রমটি নির্ধারণ করা হয়নি)।
আরো দেখুন: