ฉันไม่รู้สถานที่ใด ๆ ที่เป็นค่าเริ่มต้นเรียงลำดับตามนั้น การแก้ปัญหาคือการสร้างสถานที่ที่กำหนดเองด้วยการเรียงลำดับที่กำหนดเอง หากใครก็ตามสี่ปีต่อมาต้องการเรียงลำดับในแบบกำหนดเองนี่คือเคล็ดลับ
โลแคลส่วนใหญ่ไม่ได้ระบุลำดับการเรียงของตัวเอง แต่คัดลอกลำดับการเรียงที่กำหนดไว้/usr/share/i18n/locales/iso14651_t1_common
เพื่อให้เป็นสิ่งที่คุณต้องการแก้ไข แทนที่จะเปลี่ยนลำดับการจัดเรียงสำหรับเกือบทุกภาษาโดยการปรับเปลี่ยนต้นฉบับiso14651_t1_common
ฉันขอแนะนำให้คุณทำสำเนา รายละเอียดเกี่ยวกับวิธีการเรียงลำดับการทำงานและวิธีสร้างโลแคลที่กำหนดเองใน$HOME
ไดเรกทอรีของคุณโดยไม่ต้องเข้าถึงรูทในคำตอบของคำถามที่คล้ายกันนี้
ดูวิธีการa
และA
เรียงลำดับตามรายการในiso14651_t1_common
:
<U0061> <a>;<BAS>;<MIN>;IGNORE # 198 a
<U0041> <a>;<BAS>;<CAP>;IGNORE # 517 A
b
และB
มีความคล้ายคลึงกัน:
<U0062> <b>;<BAS>;<MIN>;IGNORE # 233 b
<U0042> <b>;<BAS>;<CAP>;IGNORE # 550 B
เราจะเห็นว่าในครั้งแรกผ่านทั้งสองa
และA
มีสัญลักษณ์เรียง<a>
ในขณะที่ทั้งสองb
และมีสัญลักษณ์เรียงB
<b>
เนื่องจาก<a>
ปรากฏขึ้นก่อน<b>
ในiso14651_t1_common
, a
และA
มีการเชื่อมโยงก่อนและb
B
รอบที่สองไม่ได้ทำลายความสัมพันธ์เพราะตัวละครทั้งสี่มีสัญลักษณ์การเรียง<BAS>
แต่ในระหว่างรอบที่สามความสัมพันธ์นั้นได้รับการแก้ไขเนื่องจากสัญลักษณ์การเรียงตัวอักษรตัวพิมพ์เล็ก<MIN>
ปรากฏขึ้นที่บรรทัด 3467 ก่อนสัญลักษณ์การเรียงตัวอักษรตัวพิมพ์ใหญ่<CAP>
(บรรทัด 3488) . ดังนั้นการเรียงลำดับสิ้นสุดขึ้นเป็นa
, A
, ,b
B
การสลับสัญลักษณ์การเรียงที่หนึ่งและที่สามจะเรียงลำดับตัวอักษรเป็นตัวแรกตามตัวอักษร (ล่างและบน) จากนั้นตามด้วยสำเนียง ( <BAS>
หมายถึงไม่เน้นเสียง) จากนั้นตามลำดับตัวอักษร อย่างไรก็ตามทั้งสอง<MIN>
และ<CAP>
มาก่อนตัวเลขดังนั้นสิ่งนี้จะมีผลที่ไม่พึงประสงค์จากการใส่ตัวเลขหลังตัวอักษร
วิธีที่ง่ายที่สุดที่จะให้หลักแรกในขณะที่ทำให้ทุกตัวอักษรตัวพิมพ์เล็กมาก่อนทุก<a>
ตัวอักษรพิมพ์ใหญ่คือการบังคับตัวอักษรทั้งหมดจะผูกในช่วงแรกการเปรียบเทียบโดยการตั้งค่าพวกเขาทั้งหมดจะเท่ากับ เพื่อให้แน่ใจว่าเรียงลำดับตามตัวอักษรภายในเคสให้เปลี่ยนสัญลักษณ์การเรียงล่าสุดจากIGNORE
เป็นสัญลักษณ์การเรียงแรกปัจจุบัน ทำตามรูปแบบนี้a
จะกลายเป็น:
<U0061> <a>;<BAS>;<MIN>;<a> # 198 a
A
จะกลายเป็น:
<U0041> <a>;<BAS>;<CAP>;<a> # 517 A
b
จะกลายเป็น:
<U0062> <a>;<BAS>;<MIN>;<b> # 233 b
B
จะกลายเป็น:
<U0042> <a>;<BAS>;<CAP>;<b> # 550 B
และตัวอักษรอื่น ๆ ที่เหลือ
เมื่อคุณสร้างเวอร์ชันที่กำหนดเองiso14651_t1_common
แล้วให้ทำตามคำแนะนำในคำตอบที่ลิงก์ด้านบนเพื่อรวบรวมสถานที่ที่กำหนดเองของคุณ