Pehea ke ʻano o Linux i nā kaula

Hōʻike

Ua hoʻomaka ʻia me kahi palapala pōkole i manaʻo ʻia e hoʻohui i ka ʻike kikoʻī e-mail nā limahana i loaʻa mai ka papa inoa o nā mea hoʻohana i ka leka uila, me nā kūlana limahana i loaʻa mai ka waihona ʻoihana HR. Ua lawe ʻia nā papa inoa ʻelua i nā faila Unicode UTF-8 a mālama ʻia me nā hopena laina Unix.

ʻIke maʻiʻo mail.txt

Иванов Андрей;[email protected]

ʻIke maʻiʻo buhg.txt

Иванова Алла;маляр
Ёлкина Элла;крановщица
Иванов Андрей;слесарь
Абаканов Михаил;маляр

No ka hoʻohui ʻana, ua hoʻokaʻawale ʻia nā faila e ke kauoha Unix hoʻokaʻina a waiho ʻia i ka hoʻokomo o ka papahana Unix hui, i hāʻule ʻole me ka hewa:

$> sort buhg.txt > buhg.srt
$> sort mail.txt > mail.srt
$> join buhg.srt mail.srt > result
join: buhg.srt:4: is not sorted: Иванов Андрей;слесарь

I ka nānā ʻana i ka hopena hoʻokaʻawale me kou mau maka i hōʻike ʻia, ma ka laulā, pololei ka hoʻokaʻawale ʻana, akā i ka hihia o ka hui ʻana o nā inoa kāne a me nā inoa wahine, hele mai nā wahine ma mua o nā kāne:

$> sort buhg.txt
Абаканов Михаил;маляр
Ёлкина Элла;крановщица
Иванова Алла;маляр
Иванов Андрей;слесарь

Me he mea lā i ka hoʻokaʻawale ʻana ma Unicode a i ʻole ka hōʻike ʻana o ka wahine i ka algorithm sorting. ʻO ka mea mua, ʻoiaʻiʻo, ʻoi aku ka plausible.

E hoʻopau kāua i kēia manawa hui a nānā aku hoʻokaʻina. E ho'āʻo kākou e hoʻoponopono i ka pilikia me ka hoʻohana ʻana i ka poking ʻepekema. ʻO ka mua, e hoʻololi kākou i ka wahi mai en_US maluna o ru_RU. No ka hoʻokaʻawale ʻana, ua lawa ia e hoʻonohonoho i ka ʻano hoʻololi kaiapuni LC_COLLATE, akā ʻaʻole mākou e hoʻopau manawa i nā mea liʻiliʻi:

$> LANG=ru_RU.UTF-8 sort buhg.txt
Абаканов Михаил;маляр
Ёлкина Элла;крановщица
Иванова Алла;маляр
Иванов Андрей;слесарь

ʻAʻohe mea i loli.

E ho'āʻo kākou e hoʻololi hou i nā faila i hoʻokahi-byte encoding:

$> iconv -f UTF-8 -t KOI8-R buhg.txt 
 | LANG=ru_RU.KOI8-R sort 
 | iconv -f KOI8-R -t UTF8

ʻAʻohe mea i loli hou.

ʻAʻohe mea hiki iā ʻoe ke hana, pono ʻoe e ʻimi i kahi hopena ma ka Pūnaewele. ʻAʻohe mea pololei e pili ana i nā inoa inoa Lūkini, akā aia nā nīnau e pili ana i nā mea ʻē aʻe. Eia kekahi laʻana, eia kahi pilikia: Mālama ʻo unix sort i nā huaʻōlelo '-' (dash) i ʻike ʻole ʻia. I ka pōkole, ua hoʻokaʻawale ʻia nā kaula "a-b", "aa", "ac" e like me "aa", "a-b", "ac".

He kūlana maʻamau ka pane ma nā wahi a pau: e hoʻohana i ka papahana programmer locale "C" a e hauʻoli ʻoe. E ho'āʻo kākou:

$> LANG=C sort buhg.txt
Ёлкина Элла;крановщица
Абаканов Михаил;маляр
Иванов Андрей;слесарь
Иванова Алла;адвокат

Ua loli kekahi mea. Ua laina pololei nā Ivanov, ʻoiai ua paheʻe ʻo Yolkina ma kahi. E hoʻi kākou i ka pilikia kumu:

$> LANG=C sort buhg.txt > buhg.srt
$> LANG=C sort mail.txt > mail.srt
$> LANG=C join buhg.srt mail.srt > result

Ua hana me ka hewa ʻole, e like me ka hoʻohiki ʻana o ka Pūnaewele. A ʻo kēia ʻoiai ʻo Yolkina i ka laina mua.

Me he mea lā ua hoʻoholo ʻia ka pilikia, akā inā wale nō, e hoʻāʻo kāua i kahi hoʻopāpā Lūkini hou - Windows CP1251:

$> iconv -f UTF-8 -t CP1251 buhg.txt 
 | LANG=ru_RU.CP1251 sort 
 | iconv -f CP1251 -t UTF8 

ʻO ka hopena hoʻokaʻawale, ʻokoʻa, e hui pū me ka wahi "C", a ʻo ka laʻana holoʻokoʻa, e like me ia, holo me ka hewa ʻole. ʻO kekahi ʻano o ka mysticism.

ʻAʻole au makemake i ka mysticism i ka hoʻolālā ʻana no ka mea maʻamau ia e uhi i nā hewa. E nānā pono kākou i ka hana. hoʻokaʻina a he aha ka hopena? LC_COLLATE .

I ka hopena e ho'āʻo wau e pane i nā nīnau:

  • No ke aha i koho hewa ʻia ai nā inoa wahine?
  • no ke aha mai LANG=ru_RU.CP1251 ua like ia LANG=C
  • no ke aha hoʻokaʻina и hui nā manaʻo like ʻole e pili ana i ke ʻano o nā kaula i hoʻokaʻawale ʻia
  • no ke aha i hewa ai kaʻu mau hiʻohiʻona?
  • ʻO ka hope pehea e hoʻokaʻawale ai i nā kaula e like me kou makemake

Hoʻokaʻawale ma Unicode

ʻO ka hoʻokuʻu mua ʻana ʻo ia ka hōʻike loea No. 10 i kuleana Unicode hōʻuluʻulu algorithm Online unicode.org. Nui nā kikoʻī ʻenehana i loko o ka hōʻike, no laila e hāʻawi wau i kahi hōʻuluʻulu pōkole o nā manaʻo nui.

collation - ʻO nā kaula "hoʻohālikelike" ke kumu o kēlā me kēia algorithm sorting. ʻOkoʻa paha nā algorithms ponoʻī ("bubble", "merge", "fast"), akā e hoʻohana lākou a pau i ka hoʻohālikelike ʻana o nā kaula ʻelua e hoʻoholo ai i ke ʻano o ka puka ʻana.

ʻO ka hoʻokaʻawale ʻana i nā kaula ma ka ʻōlelo kūlohelohe he pilikia paʻakikī. ʻOiai i ka hoʻopili ʻana i ka maʻalahi hoʻokahi-byte, ʻo ke ʻano o nā leka i ka pīʻāpā, ʻoiai ma kekahi ʻano ʻokoʻa mai ka ʻōlelo Pelekane Latin, ʻaʻole ia e hui hou me ke ʻano o nā helu helu i hoʻopili ʻia ai kēia mau leka. No laila ma ka huapalapala German ka leka Ö kū i waena О и P, a ma ka hoʻopili ʻana CP850 loaʻa iā ia ma waena ÿ и Ü.

Hiki iā ʻoe ke hoʻāʻo e hoʻokaʻawale mai kahi hoʻopili kikoʻī a noʻonoʻo i nā leka "kūpono" i hoʻonohonoho ʻia ma kekahi ʻano, e like me ka hana ʻana ma Unicode. Hoʻopili UTF8, UTF16 a i ʻole hoʻokahi-byte KOI8-R (inā makemake ʻia kahi ʻāpana liʻiliʻi o Unicode) e hāʻawi i nā hiʻohiʻona helu like ʻole o nā leka, akā e nānā i nā mea like o ka papa kumu.

ʻIke ʻia ʻoiai inā mākou e kūkulu i kahi papa hōʻailona mai ka wā ʻōpala, ʻaʻole hiki iā mākou ke hāʻawi i kahi kauoha hōʻailona honua iā ia. Ma nā huapalapala ʻāina like ʻole e hoʻohana ana i nā leka like, ʻokoʻa paha ke ʻano o kēia mau leka. No ka laʻana, ma ka ʻōlelo Palani Æ e manaʻo ʻia he ligature a hoʻokaʻawale ʻia e like me ke kaula AE. Ma ka ʻōlelo Norewai Æ he leka kaawale, aia ma hope Z. Ma ke ala, ma kahi o nā ligatures like Æ Aia nā leka i kākau ʻia me kekahi mau hōʻailona. No laila ma ka pī'āpā Czech aia kahi leka Ch, e kū ana ma waena H и I.

Ma waho aʻe o nā ʻokoʻa o nā alphabets, aia kekahi mau kuʻuna aupuni ʻē aʻe e hoʻoikaika i ka hoʻokaʻawale ʻana. ʻO ka mea nui, e kū mai ka nīnau: ma ke ʻano he aha nā huaʻōlelo i loaʻa i nā huaʻōlelo nui a me nā hua liʻiliʻi e ʻike ʻia ma ka puke wehewehe? Hiki ke hoʻopili ʻia ke koho ʻana i ka hoʻohana ʻana i nā kaha kikoʻī. Ma ka ʻōlelo Paniolo, hoʻohana ʻia kahi māka nīnau hoʻohuli i ka hoʻomaka o kahi ʻōlelo nīnau (Makemake ʻoe i ke mele?). I kēia hihia, ʻike ʻia ʻaʻole pono e hui pū ʻia nā huaʻōlelo nīnau i loko o kahi pūʻulu ʻokoʻa ma waho o ka pīʻāpā, akā pehea e hoʻokaʻawale i nā laina me nā kaha kaha ʻē aʻe?

ʻAʻole wau e noho i ka hoʻokaʻawale ʻana i nā kaula i nā ʻōlelo ʻokoʻa loa mai nā ʻōlelo ʻEulopa. E hoʻomaopopo ma nā ʻōlelo me ka ʻākau a i ʻole hema a i ʻole mai luna a lalo paha, mālama ʻia nā huaʻōlelo ma nā laina ma ka hoʻonohonoho heluhelu ʻana, a ʻo nā ʻōnaehana kākau non-alphabetic hoʻi i kā lākou mau ala ponoʻī e hoʻonohonoho i nā laina ma ke ʻano. . No ka laʻana, hiki ke kauoha ʻia nā hieroglyphs e ke ʻano (Nā kī huaʻōlelo Pākē) a i ʻole ma ka haʻi ʻana. ʻO kaʻoiaʻiʻo, ʻaʻohe oʻu manaʻo pehea e hoʻonohonoho ʻia ai nā emojis, akā hiki iā ʻoe ke hele mai me kekahi mea no lākou.

Ma muli o nā hiʻohiʻona i helu ʻia ma luna nei, ua hoʻokumu ʻia nā koi kumu no ka hoʻohālikelike ʻana i nā kaula e pili ana i nā papa Unicode:

  • ʻAʻole hilinaʻi ka hoʻohālikelike o nā kaula i ke kūlana o nā huapalapala i ka papa code;
  • Hoʻemi ʻia nā kaʻina o nā huaʻōlelo i hoʻokahi ʻano i ke ʻano canonical (A + ua like ka pōʻai luna me Å);
  • I ka hoʻohālikelike ʻana i nā kaula, e noʻonoʻo ʻia kahi ʻano i loko o ka pōʻaiapili o ke kaula a, inā pono, e hui pū me kona mau hoalauna i hoʻokahi ʻāpana o ka hoʻohālikelike (Ch ma Czech) a mahele ʻia i kekahi (Æ ma Palani);
  • pono e hoʻonohonoho ʻia nā hiʻohiʻona ʻāina āpau (kāleka, ka nui/ka liʻiliʻi, nā kaha kikoʻī, ka hoʻonohonoho ʻana o nā ʻano kākau) a hiki i ka hāʻawi lima o ke kauoha (emoji);
  • He mea koʻikoʻi ka hoʻohālikelike ʻaʻole wale no ka hoʻokaʻawale ʻana, akā ma nā wahi ʻē aʻe kekahi, no ka laʻana no ka wehewehe ʻana i nā pae lālani (hoʻololi i {A... z} ma ke kī);
  • pono e hana koke ka hoohalike ana.

Eia kekahi, ua hoʻokumu nā mea kākau o ka hōʻike i nā waiwai hoʻohālikelike ʻaʻole pono e hilinaʻi nā mea hoʻomohala algorithm:

  • ʻAʻole pono ka algorithm hoʻohālikelike i kahi pūʻulu ʻokoʻa o kēlā me kēia ʻōlelo (ka ʻōlelo Lūkini a me Ukrainian ka hapa nui o nā huaʻōlelo Cyrillic);
  • ʻAʻole pono e hilinaʻi ka hoʻohālikelike i ke ʻano o nā huaʻōlelo ma nā papa Unicode;
  • ʻAʻole pono ke kaumaha o ke kaula he ʻano o ke kaula, no ka mea, hiki ke loaʻa i ke kaula like ʻole i nā ʻano moʻomeheu like ʻole;
  • Hiki ke loli nā paona lālani i ka hui ʻana a i ʻole ka hoʻokaʻawale ʻana (mai x < y ʻaʻole ia e hahai i kēlā xz < yz);
  • ʻO nā kaula like ʻole me nā paona like ʻole i manaʻo ʻia he kūlike mai ka manaʻo o ka algorithm sorting. Hiki ke hoʻokomo i ka hoʻonohonoho hou ʻana o ia mau kaula, akā hiki ke hoʻohaʻahaʻa i ka hana;
  • I ka hoʻokaʻawale pinepine ʻana, hiki ke hoʻololi ʻia nā lālani me nā kaupaona like. ʻO ka ikaika ka waiwai o kahi algorithm wehewehe kikoʻī, ʻaʻole kahi waiwai o kahi algorithm hoʻohālikelike string (e ʻike i ka paukū mua);
  • Hiki ke hoʻololi ʻia nā lula i ka wā e hoʻomaʻemaʻe ai nā kuʻuna moʻomeheu.

Ua ʻōlelo ʻia ʻaʻole ʻike ka algorithm hoʻohālikelike e pili ana i nā semantics o nā kaula i hana ʻia. No laila, ʻaʻole pono e hoʻohālikelike ʻia nā kaula me nā huahelu, a ma nā papa inoa o nā inoa Pelekane ka ʻatikala (Beatles, Ka).

No ka hoʻokō ʻana i kēia mau koi a pau, ua manaʻo ʻia kahi algorithm hoʻokaʻawale papaʻaina multi-level (ʻoiaʻiʻo ʻehā-pae).

Ma mua, ua ho'ēmiʻia nā hua'ōlelo o ke kaula i keʻano canonical a hui pūʻia i nā'āpana hoʻohālikelike. Hāʻawi ʻia kēlā me kēia ʻāpana o ka hoʻohālikelike i kekahi mau kaupaona e pili ana i kekahi mau pae o ka hoʻohālikelike. ʻO nā paona o nā ʻāpana hoʻohālikelike he mau mea ia o nā pūʻulu i kauoha ʻia (ma kēia hihia, integers) hiki ke hoʻohālikelike ʻia no ka nui a i ʻole ka liʻiliʻi. Manaʻo kūikawā HALAWAIA (0x0) 'o ia ho'i, ma ka pae ho'ohālikelike e pili ana, 'a'ole pili kēia 'āpana i ka ho'ohālikelike. Hiki ke hana hou ʻia ka hoʻohālikelike ʻana o nā kaula i nā manawa he nui, me ka hoʻohana ʻana i nā paona o nā pae kūpono. Ma kēlā me kēia pae, hoʻohālikelike ʻia nā paona o nā ʻāpana hoʻohālikelike o nā lālani ʻelua me kekahi.

I nā hoʻokō like ʻole o ka algorithm no nā kuʻuna ʻāina ʻē aʻe, ʻokoʻa paha nā waiwai o nā coefficients, akā ʻo ka maʻamau Unicode e loaʻa i kahi papa o nā kaupaona - "Paʻamau Unicode Collation Element Table" (DUCET). Makemake wau e hoʻomaopopo i ka hoʻonohonoho ʻana i ka loli LC_COLLATE He hōʻailona maoli ia o ke koho ʻana i ka papa kaumaha ma ka hana hoʻohālikelike string.

Kaumaha paona DUCET ua hoʻonohonoho ʻia penei:

  • ma ka pae mua, ua hoemi ia na leka a pau i ka hihia hookahi, ua hooleiia na diacritics, ua malama ole ia na kaha kaha (aole a pau);
  • ma ka pae ʻelua, mālama ʻia nā diacritics wale nō;
  • ma ke kolu o ka pae, he hihia wale no ka noonoo;
  • ma ka pae ʻehā, mālama ʻia nā kaha kikoʻī.

Hoʻohālikelike ʻia ka hoʻohālikelike ʻana i kekahi mau ala: ʻo ka mua, ua hoʻohālikelike ʻia nā coefficient o ka pae mua; inā pili nā paona, a laila e hoʻohālikelike hou ʻia me nā paona pae ʻelua; alaila, o ke kolu a me ka ha.

Hoʻopau ka hoʻohālikelike inā loaʻa i nā lālani nā ʻāpana like o ka hoʻohālikelike me nā paona like ʻole. Ua manaʻo ʻia nā lālani i like ke kaupaona ʻana ma nā pae ʻehā.

Ua hāʻawi kēia algorithm (me kahi hui o nā kikoʻī loea hou) i ka inoa e hōʻike i ka No. 10 - "Unicode Collation Algorithm" (ACU).

ʻO kēia kahi e maʻalahi iki ai ke ʻano o kā mākou hiʻohiʻona. He mea maikaʻi e hoʻohālikelike me ka maʻamau Unicode.

E ho'āʻo i nā hoʻokō ACU aia kahi kūikawā loa i ka hōʻike, hoʻohana waihona kaupaona, hoʻokō DUCET. Hiki iā ʻoe ke loaʻa nā ʻano mea ʻakaʻaka a pau ma ka faila unahi. No ka laʻana, aia ke ʻano o ka mahjong a me nā domino ʻEulopa, a me ke ʻano o nā lole i loko o kahi papa kāleka (hōʻailona 1F000 a keu aku). Hoʻokomo ʻia nā kāleka kāleka e like me nā lula o ke alahaka - PCBT, a ʻo nā kāleka i loko o ka lole i loko o ke kaʻina T, 2,3, XNUMX... K.

E nānā pono ana i ka hoʻokaʻawale ʻia ʻana o nā lālani e like me DUCET He mea paʻakikī loa ia, akā, pōmaikaʻi no mākou, aia kahi hoʻokō hoʻohālike o ka waihona no ka hana ʻana me Unicode - "Nā ʻāpana honua no Unicode"(ICU).

Ma ka pūnaewele o kēia waihona, i kūkulu ʻia ma IBM, aia nā ʻaoʻao demo, me ʻaoʻao algorithm hoʻohālikelike string. Hoʻokomo mākou i kā mākou mau laina hoʻāʻo me nā hoʻonohonoho paʻamau a, aia hoʻi, loaʻa iā mākou ka hoʻokaʻawale Lūkini maikaʻi loa.

Абаканов Михаил;маляр
Ёлкина Элла;крановщица
Иванов Андрей;слесарь
Иванова Алла;адвокат

Ma ke ala, ma ka pūnaewele ICU Hiki iā ʻoe ke ʻike i ka wehewehe ʻana i ka algorithm hoʻohālikelike i ka wā e hoʻoponopono ai i nā kaha kaha. Ma na laana Kohu FAQ ʻAʻole mālama ʻia ka apostrophe a me ka hyphen.

Ua kōkua ʻo Unicode iā mākou, akā e ʻimi i nā kumu no ka ʻano ʻano ʻē hoʻokaʻina в Linux pono e hele i kahi ʻē aʻe.

Hoʻokaʻawale i ka glibc

Nānā wikiwiki i nā code kumu waiwai hoʻokaʻina mai Nā mea hoʻohana kumu GNU i hōʻike ʻia i loko o ka pono ponoʻī, iho ka localization i ka paʻi ʻana i ka waiwai o kēia manawa o ka loli LC_COLLATE ke holo nei ma ke ʻano debug:

$ sort --debug buhg.txt > buhg.srt
sort: using ‘en_US.UTF8’ sorting rules

Hana ʻia nā hoʻohālikelike string me ka hoʻohana ʻana i ka hana maʻamau strcoll, 'o ia ho'i, aia nā mea hoihoi i loko o ka waihona Glibc.

maluna o wiki ka papahana Glibc hoʻolaʻa i ka hoʻohālikelike aho hookahi pauku. Mai keia pauku hiki ke hoomaopopo ia ma Glibc Hoʻokumu ʻia ka hoʻokaʻawale ʻana i kahi algorithm i ʻike mua ʻia e mākou ACU (ʻO ka algorithm hōʻuluʻulu Unicode) a/a i ʻole ma kahi maʻamau kokoke iā ia ISO 14651 (ʻO ka hoʻonohonoho ʻana a me ka hoʻohālikelike pae honua). E pili ana i ka maʻamau hou loa, pono e hoʻomaopopo ʻia ma ka pūnaewele standards.iso.org ISO 14651 ua hoʻolaha kūkala ʻia i loaʻa i ka lehulehu, akā ke alakaʻi nei ka loulou pili i kahi ʻaoʻao ʻaʻole i loaʻa. Hoʻihoʻi ʻo Google i kekahi mau ʻaoʻao me nā loulou i nā pūnaewele kūhelu e hāʻawi ana e kūʻai i kope uila o ka maʻamau no hoʻokahi haneli euros, akā ma ka ʻaoʻao ʻekolu a ʻehā paha o nā hualoaʻa he mau loulou pololei i PDF. Ma keʻano laulā, ʻaʻole ʻokoʻa ka maʻamau ACU, akā, ʻoi aku ka paʻakikī o ka heluhelu ʻana no ka mea ʻaʻole i loaʻa nā hiʻohiʻona maopopo o nā hiʻohiʻona ʻāina o ka hoʻokaʻawale ʻana i ke kaula.

ʻO ka ʻike hoihoi loa ma wiki he loulou i mea hoʻopaʻa hewa me kahi kūkākūkā o ka hoʻokō ʻana i ka hoʻohālikelike string ma Glibc. Mai ka kūkākūkā ʻana e hiki ke aʻo ʻia kēlā Glibc hoʻohana ʻia e hoʻohālikelike i nā kaula ISOpākaukau pilikino ʻO ka Papa Hoʻohālike maʻamau (CTT), hiki ke loaʻa ka helu wahi ma ka noi A maʻamau ISO 14651. Ma waena o 2000 a me 2015 kēia papa ma Glibc ʻaʻohe mea mālama a he ʻokoʻa loa (ma ka liʻiliʻi ma waho) mai ka mana o kēia manawa o ka maʻamau. Mai 2015 a 2018, hoʻololi ʻia i ka mana hou o ka papaʻaina, a i kēia manawa ua loaʻa iā ʻoe kahi manawa e hālāwai ai i ke ola maoli i kahi mana hou o ka papaʻaina (CentOS 8), a kahiko (CentOS 7).

I kēia manawa ua loaʻa iā mākou ka ʻike āpau e pili ana i ka algorithm a me nā papa kōkua, hiki iā mākou ke hoʻi i ka pilikia kumu a hoʻomaopopo i ke ʻano o ka hoʻonohonoho pono ʻana i nā kaula i ka wahi Lūkini.

ISO 14651 / 14652

Source code o ka papaʻaina a mākou e hoihoi nei CTT ma ka hapa nui o na mahele Linux aia ma ka palapala /usr/share/i18n/locales/. Aia ka papaʻaina i loko o ka faila iso14651_t1_maʻamau. A laila ʻo kēia ka faila kuhikuhi kope iso14651_t1_common komo i loko o ka waihona iso14651_t1, ʻo ia hoʻi, ua hoʻokomo ʻia i loko o nā faila aupuni, me en_US и ru_RU. Ma ka hapa nui o na mahele Linux Aia nā faila kumu a pau i ka hoʻonohonoho kumu, akā inā ʻaʻole lākou, pono ʻoe e hoʻokomo i kahi pūʻolo hou mai ka hāʻawi ʻana.

Hoʻolālā waihona iso14651_t1 Me he mea lā, ʻaʻole ʻike ʻia nā lula no ke kūkulu ʻana i nā inoa, akā inā ʻoe e nānā, maʻalahi nā mea a pau. Hōʻike ʻia ke ʻano ma ka maʻamau ISO 14652, hiki ke hoʻoiho ʻia kahi kope mai ka pūnaewele open-std.org. Hiki ke heluhelu ʻia kahi wehewehe ʻē aʻe o ka ʻano faila kikoʻī POSIX от OpenGroup. Ma ke ʻano he ʻokoʻa i ka heluhelu ʻana i ka maʻamau, hiki iā ʻoe ke aʻo i ke kumu kumu o ka hana hoʻopili_heluhelu в glibc/locale/programs/ld-collate.c.

Penei ke ano o ka waihona:

Ma ka maʻamau, hoʻohana ʻia ke ʻano he ʻano pakele, a ʻo ka hopena o ka laina ma hope o ka # ʻano he manaʻo. Hiki ke ho'ākāka hou ʻia nā hōʻailona ʻelua, ʻo ia ka mea i hana ʻia ma ka mana hou o ka papaʻaina:

escape_char /
comment_char %

Loaʻa i ka faila nā hōʻailona ma ke ʻano ai ole ia, (kahi x - huahelu hexadecimal). ʻO kēia ka hōʻike hexadecimal o nā helu helu Unicode ma ka hoʻopili UCS-4 (UTF-32). ʻO nā mea ʻē aʻe āpau i nā bracket angle (me , <2> a me nā mea like) i manaʻo ʻia he mau kaula maʻalahi i liʻiliʻi ka manaʻo ma waho o ka pōʻaiapili.

Nā laina LC_COLLATE haʻi mai iā mākou e hoʻomaka ana ka ʻikepili e wehewehe ana i ka hoʻohālikelike ʻana o nā kaula.

ʻO ka mea mua, ua kuhikuhi ʻia nā inoa no nā kaupaona ma ka papa hoʻohālikelike a me nā inoa no nā hui hōʻailona. Ma ka ʻōlelo maʻamau, pili nā ʻano inoa ʻelua i nā hui like ʻole, akā i ka faila maoli ua hui pū ʻia lākou. Ua kuhikuhi ʻia nā inoa o nā paona e ka huaʻōlelo hōʻailona hōʻiliʻili (ʻano hoʻohālikelike) no ka mea i ka hoʻohālikelike ʻana, e manaʻo ʻia nā huaʻōlelo Unicode i loaʻa nā paona like.

Ma kahi o 900 laina ka lōʻihi o ka pauku ma ka hoʻoponopono ʻana i ka faila. Ua huki au i nā hiʻohiʻona mai nā wahi he nui e hōʻike i ka manaʻo ʻole o nā inoa a me nā ʻano syntax.

LC_COLLATE

collating-symbol <RES-1>
collating-symbol <BLK>
collating-symbol <MIN>
collating-symbol <WIDE>
...
collating-symbol <ARABIC>
collating-symbol <ETHPC>
collating-symbol <OSMANYA>
...
collating-symbol <S1D000>..<S1D35F>
collating-symbol <SFFFF> % Guaranteed largest symbol value. Keep at end of this list
...
collating-element <U0413_0301> from "<U0413><U0301>"
collating-element <U0413_0341> from "<U0413><U0341>"

  • hōʻailona hōʻuluʻulu log i kahi kaula OSMANYA ma ka papa inoa o na unahi
  • hōʻailona hōʻuluʻulu .. hoʻopaʻa inoa i ke kaʻina o nā inoa me kahi prefix S a me hexadecimal suffix helu mai 1D000 i luna 1D35F.
  • FFFF в hōʻailona hōʻuluʻulu me he mea la i ka huina nui unsigned in hexadecimal, aka he inoa wale nō ke ʻano like
  • inoa 'o ia ho'i ka helu helu ma ka ho'opili 'ana UCS-4
  • hui-hui mai "" hoʻopaʻa inoa hou no nā kiko Unicode.

I ka manawa i wehewehe ʻia ai nā inoa o nā kaupaona, ʻike ʻia nā kaupaona maoli. No ka mea, ʻoi aku ka nui ma mua o ka liʻiliʻi pili i ka hoʻohālikelike ʻana, ua hoʻoholo ʻia nā kaupaona e kahi papa inoa maʻalahi. Hoʻopaʻa mua ʻia nā paona "māmā", a laila ʻoi aku ka "kaumaha". E hoʻomanaʻo wau iā ʻoe ua hāʻawi ʻia kēlā me kēia ʻano Unicode i ʻehā mau kaupaona like ʻole. Maʻaneʻi ua hoʻohuiʻia lākou i hoʻokahi kaʻina kauoha. Ma ke kumumanaʻo, hiki ke hoʻohana ʻia kekahi inoa hōʻailona ma kekahi o nā pae ʻehā, akā hōʻike nā manaʻo e hoʻokaʻawale nā ​​​​mea hoʻomohala i nā inoa i nā pae.

% Symbolic weight assignments

% Third-level weight assignments
<RES-1>
<BLK>
<MIN>
<WIDE>
...
% Second-level weight assignments
<BASE>
<LOWLINE> % COMBINING LOW LINE
<PSILI> % COMBINING COMMA ABOVE
<DASIA> % COMBINING REVERSED COMMA ABOVE
...
% First-level weight assignments
<S0009> % HORIZONTAL TABULATION 
<S000A> % LINE FEED
<S000B> % VERTICAL TABULATION
...
<S0434> % CYRILLIC SMALL LETTER DE
<S0501> % CYRILLIC SMALL LETTER KOMI DE
<S0452> % CYRILLIC SMALL LETTER DJE
<S0503> % CYRILLIC SMALL LETTER KOMI DJE
<S0453> % CYRILLIC SMALL LETTER GJE
<S0499> % CYRILLIC SMALL LETTER ZE WITH DESCENDER
<S0435> % CYRILLIC SMALL LETTER IE
<S04D7> % CYRILLIC SMALL LETTER IE WITH BREVE
<S0454> % CYRILLIC SMALL LETTER UKRAINIAN IE
<S0436> % CYRILLIC SMALL LETTER ZHE

ʻO ka hope, ʻo ka pākaukau kaumaha maoli.

Hoʻopili ʻia ka ʻāpana kaupaona i nā laina huaʻōlelo kauoha_hoomaka и kauoha_hope. Nā koho keu kauoha_hoomaka E hoʻoholo i kahi e nānā ʻia ai nā lālani i kēlā me kēia pae o ka hoʻohālikelike. ʻO ka hoʻonohonoho paʻamau i mua. Aia i loko o ke kino o ka ʻāpana nā laina i loaʻa ka code hōʻailona a me kona mau kaupaona ʻehā. Hiki ke hōʻike ʻia ke code character e ke ʻano ponoʻī, kahi helu code, a i ʻole kahi inoa hōʻailona i wehewehe mua ʻia. Hiki ke hāʻawi ʻia nā paona i nā inoa hōʻailona, ​​nā helu helu, a i ʻole nā ​​hōʻailona ponoʻī. Inā hoʻohana ʻia nā helu helu a i ʻole nā ​​huaʻōlelo, ua like ko lākou kaumaha me ka waiwai helu o ke kiko code (kūlana ma ka papa Unicode). Manaʻo ʻia nā huaʻōlelo ʻaʻole i hōʻike ʻia (e like me kaʻu e hoʻomaopopo ai) i hāʻawi ʻia i ka papa me ke kaumaha mua e kūlike i ke kūlana ma ka papa Unicode. Waiwai kaumaha kūikawā MAKAHI 'o ia ho'i, 'a'ole mālama 'ia ka hō'ailona ma ka pae kūpono o ka ho'ohālikelike.

No ka hōʻike ʻana i ke ʻano o nā unahi, ua koho au i ʻekolu mau ʻāpana ʻike maopopo loa:

  • nā huapalapala i mālama ʻole ʻia
  • nā hōʻailona like me ka helu ʻekolu ma nā pae mua ʻelua
  • ka hoʻomaka ʻana o ka huapalapala Cyrillic, ʻaʻole i loaʻa nā diacritics, a no laila ua hoʻokaʻawale ʻia e ka pae mua a me ke kolu.

order_start forward;forward;forward;forward,position
<U0000> IGNORE;IGNORE;IGNORE;IGNORE % NULL (in 6429)
<U0001> IGNORE;IGNORE;IGNORE;IGNORE % START OF HEADING (in 6429)
<U0002> IGNORE;IGNORE;IGNORE;IGNORE % START OF TEXT (in 6429)
...
<U0033> <S0033>;<BASE>;<MIN>;<U0033> % DIGIT THREE
<UFF13> <S0033>;<BASE>;<WIDE>;<UFF13> % FULLWIDTH DIGIT THREE
<U2476> <S0033>;<BASE>;<COMPAT>;<U2476> % PARENTHESIZED DIGIT THREE
<U248A> <S0033>;<BASE>;<COMPAT>;<U248A> % DIGIT THREE FULL STOP
<U1D7D1> <S0033>;<BASE>;<FONT>;<U1D7D1> % MATHEMATICAL BOLD DIGIT THREE
...
<U0430> <S0430>;<BASE>;<MIN>;<U0430> % CYRILLIC SMALL LETTER A
<U0410> <S0430>;<BASE>;<CAP>;<U0410> % CYRILLIC CAPITAL LETTER A
<U04D1> <S04D1>;<BASE>;<MIN>;<U04D1> % CYRILLIC SMALL LETTER A WITH BREVE
<U0430_0306> <S04D1>;<BASE>;<MIN>;<U04D1> % CYRILLIC SMALL LETTER A WITH BREVE
...
<U0431> <S0431>;<BASE>;<MIN>;<U0431> % CYRILLIC SMALL LETTER BE
<U0411> <S0431>;<BASE>;<CAP>;<U0411> % CYRILLIC CAPITAL LETTER BE
<U0432> <S0432>;<BASE>;<MIN>;<U0432> % CYRILLIC SMALL LETTER VE
<U0412> <S0432>;<BASE>;<CAP>;<U0412> % CYRILLIC CAPITAL LETTER VE
...
order_end

I kēia manawa hiki iā ʻoe ke hoʻi i ka hoʻokaʻawale ʻana i nā hiʻohiʻona mai ka hoʻomaka ʻana o ka ʻatikala. Aia ka hoʻohālua ma kēia ʻāpana o ka papa kaupaona:

<U0020> IGNORE;IGNORE;IGNORE;<U0020> % SPACE
<U0021> IGNORE;IGNORE;IGNORE;<U0021> % EXCLAMATION MARK
<U0022> IGNORE;IGNORE;IGNORE;<U0022> % QUOTATION MARK
...

Hiki ke ʻike ʻia ma kēia pākaukau nā kaha kikoʻī mai ka papa ʻaina ASCII (me ka hakahaka) ʻaneʻane nānā ʻole i ka wā e hoʻohālikelike ai i nā kaula. ʻO nā mea ʻokoʻa wale nō nā laina e pili ana i nā mea āpau koe wale nō nā kaha kiko i loaʻa i nā kūlana kūlike. ʻO nā laina mai kaʻu hiʻohiʻona (ma hope o ka wehe ʻana) no ka algorithm hoʻohālikelike e like me kēia:

АбакановМихаилмаляр
ЁлкинаЭллакрановщица
ИвановаАлламаляр
ИвановАндрейслесарь

Ke noʻonoʻo nei i ka papa o nā unahi, hele mai nā leka nui ma ka Lūkini ma hope o nā leka liʻiliʻi (ma ke kolu o ka pae kaumaha aku ), pololei loa ka hoʻokaʻawale ʻana.

Ke hoʻonohonoho i kahi loli LC_COLLATE=C hoʻouka ʻia kahi papa ʻaina kūikawā e hōʻike ana i ka hoʻohālikelike byte-by-byte

static const uint32_t collseqwc[] =
{
  8, 1, 8, 0x0, 0xff,
  /* 1st-level table */
  6 * sizeof (uint32_t),
  /* 2nd-level table */
  7 * sizeof (uint32_t),
  /* 3rd-level table */
  L'x00', L'x01', L'x02', L'x03', L'x04', L'x05', L'x06', L'x07',
  L'x08', L'x09', L'x0a', L'x0b', L'x0c', L'x0d', L'x0e', L'x0f',

...
  L'xf8', L'xf9', L'xfa', L'xfb', L'xfc', L'xfd', L'xfe', L'xff'
};

No ka mea ma Unicode ka helu helu Ё ma mua o A, ua hoʻokaʻawale ʻia nā kaula e like me ia.

Nā kikokikona a me nā papa helu binary

ʻIke loa, he hana maʻamau ka hoʻohālikelike string, a me ka pākaukau papa CTT he kaʻina hana kumu kūʻai. No ka hoʻonui ʻana i ke komo ʻana i ka papaʻaina, ua hoʻohui ʻia i loko o ke ʻano binary me ke kauoha localdef.

hui localdef ʻae ʻia ma ke ʻano he ʻāpana i kahi faila me kahi papa o nā ʻano ʻāina (koho -i), kahi i hōʻike ʻia ai nā huaʻōlelo a pau e nā kiko Unicode, a me kahi faila o ka pilina ma waena o nā kiko Unicode a me nā huaʻōlelo o kahi hoʻopili kikoʻī (koho. -f). Ma muli o ka hana, hana ʻia nā faila binary no ka wahi me ka inoa i kuhikuhi ʻia ma ka ʻāpana hope.

ʻO Glibc Kākoʻo ʻia ʻelua ʻano faila binary: "kuʻuna" a me "modern".

ʻO ke ʻano kuʻuna, ʻo ia ka inoa o ka wahi ka inoa o ka subdirectory in /usr/lib/locale/. Mālama kēia subdirectory i nā faila binary LC_COLLATE, LC_CTYPE, LC_TIME a laila. waihona LC_IDENTIFICATION Loaʻa ka inoa kūhelu o ka wahi (ʻokoʻa paha me ka inoa papa kuhikuhi) a me nā manaʻo.

ʻO ka hōʻano hou e pili ana i ka mālama ʻana i nā wahi āpau i kahi waihona hoʻokahi /usr/lib/locale/locale-archive, i palapala ʻia i ka hoʻomanaʻo virtual o nā kaʻina hana a pau e hoʻohana ana Glibc. ʻO ka inoa kūloko i ke ʻano hou e pili ana i kekahi canonization - ʻo nā helu a me nā leka i hoʻemi ʻia i ka helu haʻahaʻa e waiho ʻia ma nā inoa hoʻopā. No laila ru_RU.KOI8-R, e mālama ʻia e like me ru_RU.koi8r.

Huli ʻia nā faila hoʻokomo ma ka papa kuhikuhi o kēia manawa, a me nā papa kuhikuhi /usr/share/i18n/locales/ и /usr/share/i18n/charmaps/ no nā faila CTT a me ka hoʻopili ʻana i nā faila, kēlā me kēia.

Eia kekahi laʻana, ke kauoha

localedef -i ru_RU -f MAC-CYRILLIC ru_RU.MAC-CYRILLIC

e hōʻuluʻulu i ka faila /usr/share/i18n/locales/ru_RU me ka hoʻohana ʻana i ka faila encoding /usr/share/i18n/charmaps/MAC-CYRILLIC.gz a mālama i ka hopena i loko /usr/lib/locale/locale-archive malalo o ka inoa ru_RU.maccyrillic

Inā hoʻonoho ʻoe i ka hoʻololi LANG = en_US.UTF-8 alaila Glibc e ʻimi i nā binaries locale ma ke ʻano o nā faila a me nā papa kuhikuhi:

/usr/lib/locale/locale-archive
/usr/lib/locale/en_US.UTF-8/
/usr/lib/locale/en_US/
/usr/lib/locale/enUTF-8/
/usr/lib/locale/en/

Inā loaʻa kahi ʻāina ma nā ʻano kuʻuna a me nā ʻano hou, a laila hāʻawi ʻia ka mea nui i ka mea hou.

Hiki iā ʻoe ke nānā i ka papa inoa o nā wahi i hōʻuluʻulu ʻia me ke kauoha kahi -a.

Ke hoʻomākaukau nei i kāu papa hoʻohālikelike

I kēia manawa, me ka ʻike, hiki iā ʻoe ke hana i kāu papa hoʻohālikelike string kūpono. Pono kēia papa e hoʻohālikelike pono i nā leka Lūkini, me ka leka Ё, a ma ka manawa like e noʻonoʻo i nā kaha kaha e like me ka papa. ASCII.

ʻO ke kaʻina hana o ka hoʻomākaukau ʻana i kāu papa hoʻonohonoho ponoʻī he ʻelua mau ʻanuʻu: hoʻoponopono i ka papa paona a hoʻohui ʻia i loko o ke ʻano binary me ke kauoha. localdef.

I mea e hoʻoponopono ʻia ka papa hoʻohālikelike me nā koina hoʻoponopono liʻiliʻi, ma ke ʻano ISO 14652 Hāʻawi ʻia nā ʻāpana no ka hoʻoponopono ʻana i nā paona o kahi papaʻaina e kū nei. Hoʻomaka ka ʻāpana me kahi huaʻōlelo hooponopono hou a e hōʻike ana i ke kūlana ma hope o ka hana ʻana i ke pani. Hoʻopau ka ʻāpana me ka laina hoʻoponopono hou. Inā pono e hoʻoponopono i kekahi mau ʻāpana o ka papaʻaina, a laila hana ʻia kahi ʻāpana no kēlā me kēia ʻāpana.

Ua kope au i nā mana hou o nā faila iso14651_t1_maʻamau и ru_RU mai ka waihona Glibc i koʻu papa kuhikuhi home ~/.local/share/i18n/locales/ a hoʻoponopono iki i ka ʻāpana LC_COLLATE в ru_RU. Ua kūpono piha nā mana hou o nā faila me kaʻu mana Glibc. Inā makemake ʻoe e hoʻohana i nā mana kahiko o nā faila, pono ʻoe e hoʻololi i nā inoa hōʻailona a me kahi kahi e hoʻomaka ai ke pani i ka papaʻaina.

LC_COLLATE
% Copy the template from ISO/IEC 14651
copy "iso14651_t1"
reorder-after <U000D>
<U0020> <S0020>;<BASE>;<MIN>;<U0020> % SPACE
<U0021> <S0021>;<BASE>;<MIN>;<U0021> % EXCLAMATION MARK
<U0022> <S0022>;<BASE>;<MIN>;<U0022> % QUOTATION MARK
...
<U007D> <S007D>;<BASE>;<MIN>;<U007D> % RIGHT CURLY BRACKET
<U007E> <S007E>;<BASE>;<MIN>;<U007E> % TILDE
reorder-end
END LC_COLLATE

ʻOiaʻiʻo, pono e hoʻololi i nā kahua i loko LC_IDENTIFICATION i kuhikuhi ai lakou i ka wahi ru_MY, akā i kaʻu hiʻohiʻona ʻaʻole koi ʻia kēia, no ka mea ua kāpae wau i ka waihona mai ka ʻimi ʻana i nā wahi waihona waihona.

ia localdef ua hana pū me nā faila i loko o kaʻu waihona ma o ka loli I18NPATH Hiki iā ʻoe ke hoʻohui i kahi papa kuhikuhi hou e ʻimi ai i nā faila hoʻokomo, a hiki ke kuhikuhi ʻia ka papa kuhikuhi no ka mālama ʻana i nā faila binary ma ke ʻano he ala me nā ʻōpala:

$> I18NPATH=~/.local/share/i18n localedef -i ru_RU -f UTF-8 ~/.local/lib/locale/ru_MY.UTF-8

POSIX manaʻo i loko ʻŌlelo hiki iā ʻoe ke kākau i nā ala pololei i nā papa kuhikuhi me nā faila kūloko, e hoʻomaka me kahi slash i mua, akā Glibc в Linux helu ʻia nā ala āpau mai ka papa kuhikuhi kumu, hiki ke hoʻopau ʻia ma o kahi loli LOCPATH. Ma hope o ke kau ʻana LOCPATH=~/.local/lib/locale/ ʻO nā faila āpau e pili ana i ka localization e ʻimi wale ʻia ma kaʻu waihona. Waihona o nā wahi me ka hoʻonohonoho hoʻololi LOCPATH mālama ʻole ʻia.

Eia ka ho'āʻo koʻikoʻi:

$> LANG=ru_MY.UTF-8 LOCPATH=~/.local/lib/locale/ sort buhg.txt
Абаканов Михаил;маляр
Ёлкина Элла;крановщица
Иванов Андрей;слесарь
Иванова Алла;адвокат

Hooray! Ua hana mākou!

Buke hana

Ua pane mua wau i nā nīnau e pili ana i ka hoʻokaʻawale ʻana i ke kaula i ka hoʻomaka ʻana, akā aia kekahi mau nīnau e pili ana i nā hewa - ʻike ʻia a ʻike ʻole ʻia.

E hoʻi kāua i ka pilikia kumu.

A me ka papahana hoʻokaʻina a me ka papahana hui e hoʻohana i nā hana hoʻohālikelike kaula like mai Glibc. Pehea i hiki mai ai hui hāʻawi i kahi kuhi hewa ma nā lālani i hoʻokaʻawale ʻia e ke kauoha hoʻokaʻina ma ka ʻāina en_US.UTF-8? He maʻalahi ka pane: hoʻokaʻina hoʻohālikelike i ke kaula holoʻokoʻa, a hui hoʻohālikelike wale i ke kī, ʻo ia ka hoʻomaka ʻana o ke kaula a hiki i ke ʻano keʻokeʻo mua. Ma kaʻu laʻana, ua loaʻa kēia i kahi memo hewa no ka mea ʻaʻole i kūlike ka ʻano o nā huaʻōlelo mua i nā laina me ka hoʻokaʻawale ʻana i nā laina piha.

Kaulana "C" e hōʻoiaʻiʻo ana e hoʻokaʻawale ʻia nā substrings mua a hiki i ka hakahaka mua, akā e uhi wale kēia i ka hewa. Hiki ke koho i ka ʻikepili (nā poʻe me nā inoa inoa like ʻole, akā nā inoa mua ʻē aʻe) i hāʻawi ʻia me ka ʻole o ka memo hewa, e hāʻawi i kahi hopena hoʻohui faila hewa. Inā makemake mākou hui hoʻohui ʻia nā laina faila ma ka inoa piha, a laila ʻo ke ala kūpono e wehewehe pono i ka mea hoʻokaʻawale kahua a hoʻokaʻawale ʻia e ke kī kī, ʻaʻole ma ka laina holoʻokoʻa. I kēia hihia, e holo pololei ka hui ʻana a ʻaʻohe hewa ma kekahi wahi:

$> sort -t ; -k 1 buhg.txt > buhg.srt
$> sort -t ; -k 1 mail.txt > mail.srt
$> join -t ; buhg.srt mail.srt > result

Ua hoʻokō maikaʻi ʻia ka laʻana ma ka hoʻopā ʻana CP1251 aia kekahi hewa. ʻO ka mea ʻoiaʻiʻo ma nā māhele a pau i ʻike iaʻu Linux Nalo nā pūʻolo wahi i hōʻuluʻulu ʻia ru_RU.CP1251. Inā ʻaʻole ʻike ʻia ka wahi i hōʻuluʻulu ʻia, a laila hoʻokaʻina hoʻohana mālie i ka hoʻohālikelike byte-by-byte, ʻo ia ka mea a mākou i ʻike ai.

Ma ke ala, aia kekahi glitch liʻiliʻi e pili ana i ka hiki ʻole o nā wahi i hōʻuluʻulu ʻia. Hui LOCPATH=/tmp wahi -a e hāʻawi i kahi papa inoa o nā wahi āpau i loko waihona waihona, akā me ka hoʻonohonoho hoʻololi LOCPATH no nā polokalamu āpau (me ka hapa nui kūloko) ʻaʻole e loaʻa kēia mau wahi.

$> LOCPATH=/tmp locale -a | grep en_US
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_COLLATE to default locale: No such file or directory
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8

$> LC_COLLATE=en_US.UTF-8 sort --debug
sort: using ‘en_US.UTF-8’ sorting rules

$> LOCPATH=/tmp LC_COLLATE=en_US.UTF-8 sort --debug
sort: using simple byte comparison

hopena

Inā he polokalamu ʻoe i maʻa i ka noʻonoʻo ʻana ʻo nā kaula he set of bytes, a laila kāu koho LC_COLLATE=C.

Inā he kanaka linguist a mea hoʻopili puke wehewehe ʻōlelo paha ʻoe, a laila ʻoi aku ka maikaʻi o ka hōʻuluʻulu ʻana ma kou wahi.

Inā he mea hoʻohana maʻalahi ʻoe, a laila pono ʻoe e maʻa i ka ʻoiaʻiʻo o ke kauoha ls-a nā faila e hoʻomaka ana me kahi kiko i hui pū ʻia me nā faila e hoʻomaka ana me kahi leka, a Luna aumoe, e hoʻohana ana i kāna mau hana i loko e hoʻokaʻawale i nā inoa, kau i nā faila e hoʻomaka me kahi kiko ma ka hoʻomaka o ka papa inoa.

kūmole

Hōʻike No. 10 Unicode collation algorithm

ʻO ke kaupaona ʻano ma unicode.org

ICU - ka hoʻokō ʻana i kahi waihona no ka hana pū me Unicode mai IBM.

Hoʻokaʻawale hoʻāʻo me ka hoʻohana ʻana ICU

Kaumaha ʻano ma ISO 14651

ʻO ka wehewehe ʻana i ka ʻano waihona me nā unahi ISO 14652

Kūkākūkā o ka hoʻohālikelike aho ma Glibc

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka