ืื™ืš ื”ืžื™ื•ืŸ ืฉืœ ืœื™ื ื•ืงืก ืžืžื™ื™ืŸ ืžื—ืจื•ื–ื•ืช

ืžื‘ื•ื

ื”ื›ืœ ื”ืชื—ื™ืœ ื‘ืชืกืจื™ื˜ ืงืฆืจ ืฉื”ื™ื” ืืžื•ืจ ืœืฉืœื‘ ืžื™ื“ืข ื›ืชื•ื‘ืช ื“ื•ื"ืœ ืขื•ื‘ื“ื™ื ืฉื”ืชืงื‘ืœื• ืžืจืฉื™ืžืช ื”ืžืฉืชืžืฉื™ื ื‘ืจืฉื™ืžืช ื”ืชืคื•ืฆื”, ื›ืืฉืจ ืชืคืงื™ื“ื™ ืขื•ื‘ื“ื™ื ืžืชืงื‘ืœื™ื ืžืžืื’ืจ ืžื—ืœืงืช ืžืฉืื‘ื™ ืื ื•ืฉ. ืฉืชื™ ื”ืจืฉื™ืžื•ืช ื™ื•ืฆืื• ืœืงื•ื‘ืฆื™ ื˜ืงืกื˜ ืฉืœ Unicode UTF-8 ื•ื ืฉืžืจ ืขื ืกื™ื•ืžื•ืช ืงื• ื™ื•ื ื™ืงืก.

ืชื•ึนื›ึถืŸ mail.txt

ะ˜ะฒะฐะฝะพะฒ ะะฝะดั€ะตะน;[email protected]

ืชื•ึนื›ึถืŸ buhg.txt

ะ˜ะฒะฐะฝะพะฒะฐ ะะปะปะฐ;ะผะฐะปัั€
ะะปะบะธะฝะฐ ะญะปะปะฐ;ะบั€ะฐะฝะพะฒั‰ะธั†ะฐ
ะ˜ะฒะฐะฝะพะฒ ะะฝะดั€ะตะน;ัะปะตัะฐั€ัŒ
ะะฑะฐะบะฐะฝะพะฒ ะœะธั…ะฐะธะป;ะผะฐะปัั€

ืœืžื™ื–ื•ื’, ื”ืงื‘ืฆื™ื ืžื•ื™ื ื• ืœืคื™ ืคืงื•ื“ืช Unix sort ื•ื”ื•ื’ืฉ ืœืงืœื˜ ืฉืœ ืชื•ื›ื ื™ืช ื™ื•ื ื™ืงืก ืœื”ืฆื˜ืจืฃ, ืฉื ื›ืฉืœ ื‘ืื•ืคืŸ ื‘ืœืชื™ ืฆืคื•ื™ ืขื ืฉื’ื™ืื”:

$> sort buhg.txt > buhg.srt
$> sort mail.txt > mail.srt
$> join buhg.srt mail.srt > result
join: buhg.srt:4: is not sorted: ะ˜ะฒะฐะฝะพะฒ ะะฝะดั€ะตะน;ัะปะตัะฐั€ัŒ

ื”ืฆื’ืช ืชื•ืฆืืช ื”ืžื™ื•ืŸ ื‘ืขื™ื ื™ื™ื ื”ืจืืชื” ืฉื‘ืื•ืคืŸ ื›ืœืœื™ ื”ืžื™ื•ืŸ ื ื›ื•ืŸ, ืื‘ืœ ื‘ืžืงืจื” ืฉืœ ืฆื™ืจื•ืคื™ ืžืงืจื™ื ืฉืœ ืฉืžื•ืช ืžืฉืคื—ื” ื–ื›ืจื™ื ื•ื ืฉื™ื, ื”ื ืงื‘ื•ืช ื‘ืื•ืช ืœืคื ื™ ื”ื–ื›ืจื™ื:

$> sort buhg.txt
ะะฑะฐะบะฐะฝะพะฒ ะœะธั…ะฐะธะป;ะผะฐะปัั€
ะะปะบะธะฝะฐ ะญะปะปะฐ;ะบั€ะฐะฝะพะฒั‰ะธั†ะฐ
ะ˜ะฒะฐะฝะพะฒะฐ ะะปะปะฐ;ะผะฐะปัั€
ะ˜ะฒะฐะฝะพะฒ ะะฝะดั€ะตะน;ัะปะตัะฐั€ัŒ

ื ืจืื” ื›ืžื• ืชืงืœืช ืžื™ื•ืŸ ื‘ื™ื•ื ื™ืงื•ื“ ืื• ื›ืžื• ื‘ื™ื˜ื•ื™ ืฉืœ ืคืžื™ื ื™ื–ื ื‘ืืœื’ื•ืจื™ืชื ื”ืžื™ื•ืŸ. ื”ืจืืฉื•ืŸ, ื›ืžื•ื‘ืŸ, ืกื‘ื™ืจ ื™ื•ืชืจ.

ื‘ื•ื ื ืฉื™ื ืืช ื–ื” ื‘ืฆื“ ืœืขืช ืขืชื” ืœื”ืฆื˜ืจืฃ ื•ืœื”ืชืžืงื“ ื‘ sort. ื‘ื•ืื• ื ื ืกื” ืœืคืชื•ืจ ืืช ื”ื‘ืขื™ื” ื‘ืืžืฆืขื•ืช ื—ื™ื˜ื•ื˜ ืžื“ืขื™. ืจืืฉื™ืช, ื‘ื•ืื• ื ืฉื ื” ืืช ื”ืžืงื•ื ืž en_US ืขืœ ru_RU. ื›ื“ื™ ืœืžื™ื™ืŸ, ื–ื” ื™ื”ื™ื” ืžืกืคื™ืง ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืืช ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” LC_COLLATE, ืื‘ืœ ืœื ื ื‘ื–ื‘ื– ื–ืžืŸ ืขืœ ื–ื•ื˜ื•ืช:

$> LANG=ru_RU.UTF-8 sort buhg.txt
ะะฑะฐะบะฐะฝะพะฒ ะœะธั…ะฐะธะป;ะผะฐะปัั€
ะะปะบะธะฝะฐ ะญะปะปะฐ;ะบั€ะฐะฝะพะฒั‰ะธั†ะฐ
ะ˜ะฒะฐะฝะพะฒะฐ ะะปะปะฐ;ะผะฐะปัั€
ะ˜ะฒะฐะฝะพะฒ ะะฝะดั€ะตะน;ัะปะตัะฐั€ัŒ

ืฉื•ื ื“ื‘ืจ ืœื ื”ืฉืชื ื”.

ื‘ื•ืื• ื ื ืกื” ืœืงื•ื“ื“ ืžื—ื“ืฉ ืืช ื”ืงื‘ืฆื™ื ืœืงื™ื“ื•ื“ ืฉืœ ื‘ื™ื™ื˜ ื‘ื•ื“ื“:

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

ืฉื•ื‘ ืฉื•ื ื“ื‘ืจ ืœื ื”ืฉืชื ื”.

ืื™ืŸ ืžื” ืœืขืฉื•ืช, ืชืฆื˜ืจืš ืœื—ืคืฉ ืคืชืจื•ืŸ ื‘ืื™ื ื˜ืจื ื˜. ืื™ืŸ ืฉื•ื ื“ื‘ืจ ื™ืฉื™ืจื•ืช ืขืœ ืฉืžื•ืช ืžืฉืคื—ื” ืจื•ืกื™ื™ื, ืื‘ืœ ื™ืฉ ืฉืืœื•ืช ืขืœ ืžื•ื–ืจื•ื™ื•ืช ืžื™ื•ืŸ ืื—ืจื•ืช. ืœื“ื•ื’ืžื”, ื”ื ื” ื‘ืขื™ื”: ืžื™ื•ืŸ ื‘ื™ื•ื ื™ืงืก ืžืชื™ื™ื—ืก ืœืชื•ื•ื™ื '-' (ืžืงืฃ) ื›ืืœ ื‘ืœืชื™ ื ืจืื™ื. ื‘ืงื™ืฆื•ืจ, ื”ืžื—ืจื•ื–ื•ืช "ab", "aa", "ac" ืžืžื•ื™ื ื•ืช ื›"aa", "ab", "ac".

ื”ืชืฉื•ื‘ื” ื”ื™ื ืกื˜ื ื“ืจื˜ื™ืช ื‘ื›ืœ ืžืงื•ื: ื”ืฉืชืžืฉื• ื‘ืื™ื–ื•ืจ ื”ืžืชื›ื ืช "ื’" ื•ืืชื” ืชื”ื™ื” ืžืื•ืฉืจ. ื‘ื•ื ื ื ืกื”:

$> LANG=C sort buhg.txt
ะะปะบะธะฝะฐ ะญะปะปะฐ;ะบั€ะฐะฝะพะฒั‰ะธั†ะฐ
ะะฑะฐะบะฐะฝะพะฒ ะœะธั…ะฐะธะป;ะผะฐะปัั€
ะ˜ะฒะฐะฝะพะฒ ะะฝะดั€ะตะน;ัะปะตัะฐั€ัŒ
ะ˜ะฒะฐะฝะพะฒะฐ ะะปะปะฐ;ะฐะดะฒะพะบะฐั‚

ืžืฉื”ื• ื”ืฉืชื ื”. ื”ืื™ื‘ื ื•ื‘ื™ื ื”ืชื™ื™ืฆื‘ื• ื‘ืกื“ืจ ื”ื ื›ื•ืŸ, ืื ื›ื™ ื™ื•ืœืงื™ื ื” ื”ื—ืœื™ืงื” ืœืื ืฉื”ื•. ื ื—ื–ื•ืจ ืœื‘ืขื™ื” ื”ืžืงื•ืจื™ืช:

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

ื–ื” ืขื‘ื“ ืœืœื ืฉื’ื™ืื•ืช, ื›ืคื™ ืฉื”ื‘ื˜ื™ื— ื”ืื™ื ื˜ืจื ื˜. ื•ื–ืืช ืœืžืจื•ืช ื™ื•ืœืงื™ื ื” ื‘ืฉื•ืจื” ื”ืจืืฉื•ื ื”.

ื ืจืื” ืฉื”ื‘ืขื™ื” ื ืคืชืจื”, ืื‘ืœ ืœื™ืชืจ ื‘ื™ื˜ื—ื•ืŸ, ื‘ื•ืื• ื ื ืกื” ืงื™ื“ื•ื“ ืจื•ืกื™ ืื—ืจ - Windows CP1251:

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

ืชื•ืฆืืช ื”ืžื™ื•ืŸ, ืœืžืจื‘ื” ื”ืคืœื, ืชืชืื™ื ืœืžื™ืงื•ื "ื’", ื•ื›ืœ ื”ื“ื•ื’ืžื”, ื‘ื”ืชืื, ืคื•ืขืœืช ืœืœื ืฉื’ื™ืื•ืช. ืกื•ื’ ืฉืœ ืžื™ืกื˜ื™ืงื”.

ืื ื™ ืœื ืื•ื”ื‘ ืžื™ืกื˜ื™ืงื” ื‘ืชื›ื ื•ืช ื›ื™ ื”ื™ื ื‘ื“ืจืš ื›ืœืœ ืžื—ืคื” ืขืœ ื˜ืขื•ื™ื•ืช. ื ืฆื˜ืจืš ืœื‘ื“ื•ืง ื‘ืจืฆื™ื ื•ืช ืื™ืš ื–ื” ืขื•ื‘ื“. sort ื•ืขืœ ืžื” ื–ื” ืžืฉืคื™ืข? LC_COLLATE .

ื‘ืกื•ืฃ ืื ืกื” ืœืขื ื•ืช ืขืœ ื”ืฉืืœื•ืช:

  • ืžื“ื•ืข ืฉืžื•ืช ืžืฉืคื—ื” ื ืฉื™ื™ื ืžื•ื™ื ื• ื‘ืฆื•ืจื” ืฉื’ื•ื™ื”?
  • ืžื“ื•ืข LANG=ru_RU.CP1251 ื”ืชื‘ืจืจ ื›ืฉื•ื•ื” ืขืจืš LANG=C
  • ืœืžื” sort ะธ ืœื”ืฆื˜ืจืฃ ืจืขื™ื•ื ื•ืช ืฉื•ื ื™ื ืœื’ื‘ื™ ืกื“ืจ ื”ืžื—ืจื•ื–ื•ืช ื”ืžืžื•ื™ื ื•ืช
  • ืœืžื” ื™ืฉ ืฉื’ื™ืื•ืช ื‘ื›ืœ ื”ื“ื•ื’ืžืื•ืช ืฉืœื™?
  • ืกื•ืฃ ืกื•ืฃ ืื™ืš ืœืžื™ื™ืŸ ืžื—ืจื•ื–ื•ืช ืœืคื™ ื”ื˜ืขื ืฉืœืš

ืžื™ื•ืŸ ื‘ื™ื•ื ื™ืงื•ื“

ื”ืชื—ื ื” ื”ืจืืฉื•ื ื” ืชื”ื™ื” ื“ื•ื— ื˜ื›ื ื™ ืžืก' 10 ื–ื›ืื™ ืืœื’ื•ืจื™ืชื ืื™ืกื•ืฃ ื™ื•ื ื™ืงื•ื“ ืžืงื•ื•ืŸ unicode.org. ื”ื“ื•ื— ืžื›ื™ืœ ื”ืจื‘ื” ืคืจื˜ื™ื ื˜ื›ื ื™ื™ื, ืื– ื”ืจืฉื• ืœื™ ืœืชืช ืกื™ื›ื•ื ืงืฆืจ ืฉืœ ื”ืจืขื™ื•ื ื•ืช ื”ืขื™ืงืจื™ื™ื.

ืื™ืกื•ืฃ - "ื”ืฉื•ื•ืืช" ืžื—ืจื•ื–ื•ืช ื”ื™ื ื”ื‘ืกื™ืก ืœื›ืœ ืืœื’ื•ืจื™ืชื ืžื™ื•ืŸ. ื”ืืœื’ื•ืจื™ืชืžื™ื ืขืฆืžื ืขืฉื•ื™ื™ื ืœื”ื™ื•ืช ืฉื•ื ื™ื ("ื‘ื•ืขื”", "ืžื™ื–ื•ื’", "ืžื”ื™ืจ"), ืื‘ืœ ื›ื•ืœื ื™ืฉืชืžืฉื• ื‘ื”ืฉื•ื•ืื” ืฉืœ ื–ื•ื’ ืžื—ืจื•ื–ื•ืช ื›ื“ื™ ืœืงื‘ื•ืข ืืช ื”ืกื“ืจ ืฉื‘ื• ื”ื ืžื•ืคื™ืขื™ื.

ืžื™ื•ืŸ ืžื—ืจื•ื–ื•ืช ื‘ืฉืคื” ื˜ื‘ืขื™ืช ื”ื™ื ื‘ืขื™ื” ืžื•ืจื›ื‘ืช ืœืžื“ื™. ืืคื™ืœื• ื‘ืงื™ื“ื•ื“ ื”ื‘ืชื™ื ื”ืคืฉื•ื˜ื™ื ื‘ื™ื•ืชืจ, ืกื“ืจ ื”ืื•ืชื™ื•ืช ื‘ืืœืคื‘ื™ืช, ืืคื™ืœื• ื‘ืื•ืคืŸ ื›ืœืฉื”ื• ืฉื•ื ื” ืžื”ืืœืคื‘ื™ืช ื”ืœื˜ื™ื ื™ ื”ืื ื’ืœื™, ืœื ื™ืขืœื” ืขื•ื“ ื‘ืงื ื” ืื—ื“ ืขื ืกื“ืจ ื”ืขืจื›ื™ื ื”ืžืกืคืจื™ื™ื ืฉื‘ื”ื ืžืงื•ื“ื“ื•ืช ื”ืื•ืชื™ื•ืช ื”ืœืœื•. ืื– ื‘ืืœืคื‘ื™ืช ื”ื’ืจืžื ื™ ื”ืื•ืช ร– ืขื•ืžื“ ื‘ื™ืŸ ะž ะธ P, ื•ื‘ืงื™ื“ื•ื“ CP850 ื”ื™ื ืขื•ื‘ืจืช ื‘ื™ื ื™ื”ื รฟ ะธ รœ.

ืืชื” ื™ื›ื•ืœ ืœื ืกื•ืช ืœื”ืคืฉื˜ ืžืงื™ื“ื•ื“ ืกืคืฆื™ืคื™ ื•ืœืฉืงื•ืœ ืื•ืชื™ื•ืช "ืื™ื“ื™ืืœื™ื•ืช" ื”ืžืกื•ื“ืจื•ืช ื‘ืกื“ืจ ื›ืœืฉื”ื•, โ€‹โ€‹ื›ืคื™ ืฉื ืขืฉื” ื‘-Unicode. ืงื™ื“ื•ื“ื™ื Utfxnumx, Utfxnumx ืื• ื‘ื™ื™ื˜ ืื—ื“ KOI8-R (ืื ื™ืฉ ืฆื•ืจืš ื‘ืชืช-ืงื‘ื•ืฆื” ืžื•ื’ื‘ืœืช ืฉืœ Unicode) ื™ื™ืชืŸ ื™ื™ืฆื•ื’ื™ื ืžืกืคืจื™ื™ื ืฉื•ื ื™ื ืฉืœ ืื•ืชื™ื•ืช, ืืš ืžืชื™ื™ื—ืก ืœืื•ืชื ืืœืžื ื˜ื™ื ืฉืœ ื˜ื‘ืœืช ื”ื‘ืกื™ืก.

ืžืกืชื‘ืจ ืฉื’ื ืื ื ื‘ื ื” ื˜ื‘ืœืช ืกืžืœื™ื ืžืืคืก, ืœื ื ื•ื›ืœ ืœื”ืงืฆื•ืช ืœื” ืกื“ืจ ืกืžืœื™ื ืื•ื ื™ื‘ืจืกืœื™. ื‘ืืœืคื‘ื™ืช ืœืื•ืžื™ื™ื ืฉื•ื ื™ื ื”ืžืฉืชืžืฉื™ื ื‘ืื•ืชื™ื•ืช ื–ื”ื•ืช, ืกื“ืจ ื”ืื•ืชื™ื•ืช ืขืฉื•ื™ ืœื”ื™ื•ืช ืฉื•ื ื”. ืœืžืฉืœ, ื‘ืฆืจืคืชื™ืช ร† ื™ื™ื—ืฉื‘ ื›ืงืฉื™ืจื” ื•ืžืžื•ื™ืŸ ื›ืžื—ืจื•ื–ืช AE. ื‘ื ื•ืจื‘ื’ื™ืช ร† ื™ื”ื™ื” ืžื›ืชื‘ ื ืคืจื“, ืืฉืจ ืžืžื•ืงื ืœืื—ืจ Z. ืื’ื‘, ื‘ื ื•ืกืฃ ืœืงืฉืจื™ื ื›ืžื• ร† ื™ืฉ ืื•ืชื™ื•ืช ื”ื›ืชื•ื‘ื•ืช ืขื ืžืกืคืจ ืกืžืœื™ื. ืื– ื‘ืืœืคื‘ื™ืช ื”ืฆ'ื›ื™ ื™ืฉ ืื•ืช Ch, ื”ืขื•ืžื“ ื‘ื™ื ื™ื”ืŸ H ะธ I.

ื‘ื ื•ืกืฃ ืœื”ื‘ื“ืœื™ื ื‘ืืœืคื‘ื™ืช, ื™ืฉ ืžืกื•ืจื•ืช ืœืื•ืžื™ื•ืช ืื—ืจื•ืช ื”ืžืฉืคื™ืขื•ืช ืขืœ ื”ืžื™ื•ืŸ. ื‘ืžื™ื•ื—ื“ ื ืฉืืœืช ื”ืฉืืœื”: ื‘ืื™ื–ื” ืกื“ืจ ืฆืจื™ื›ื•ืช ืœื”ื•ืคื™ืข ื‘ืžื™ืœื•ืŸ ืžื™ืœื™ื ื”ืžื•ืจื›ื‘ื•ืช ืžืื•ืชื™ื•ืช ื’ื“ื•ืœื•ืช ื•ืงื˜ื ื•ืช? ื”ืžื™ื•ืŸ ืขืฉื•ื™ ืœื”ื™ื•ืช ืžื•ืฉืคืข ื’ื ืžื”ืฉื™ืžื•ืฉ ื‘ืกื™ืžื ื™ ืคื™ืกื•ืง. ื‘ืกืคืจื“ื™ืช, ืกื™ืžืŸ ืฉืืœื” ื”ืคื•ืš ืžืฉืžืฉ ื‘ืชื—ื™ืœืช ืžืฉืคื˜ ื—ืงื™ืจื” (ืืชื” ืื•ื”ื‘ ืžื•ืกื™ืงื”?). ื‘ืžืงืจื” ื–ื”, ื‘ืจื•ืจ ืฉืื™ืŸ ืœืงื‘ืฅ ืžืฉืคื˜ื™ ื—ืงื™ืจื” ืœืืฉื›ื•ืœ ื ืคืจื“ ืžื—ื•ืฅ ืœืืœืคื‘ื™ืช, ืื‘ืœ ืื™ืš ืœืžื™ื™ืŸ ืฉื•ืจื•ืช ืขื ืกื™ืžื ื™ ืคื™ืกื•ืง ืื—ืจื™ื?

ืœื ืืชืขื›ื‘ ืขืœ ืžื™ื•ืŸ ืžื—ืจื•ื–ื•ืช ื‘ืฉืคื•ืช ืฉื•ื ื•ืช ืžืื•ื“ ืžื”ืื™ืจื•ืคืื™ื•ืช. ืฉื™ืžื• ืœื‘ ืฉื‘ืฉืคื•ืช ืขื ื›ื™ื•ื•ืŸ ื›ืชื™ื‘ื” ืžื™ืžื™ืŸ ืœืฉืžืืœ ืื• ืžืœืžืขืœื” ืœืžื˜ื”, ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉืชื•ื•ื™ื ื‘ืฉื•ืจื•ืช ืžืื•ื—ืกื ื™ื ื‘ืกื“ืจ ืงืจื™ืื”, ื•ืืคื™ืœื• ืœืžืขืจื›ื•ืช ื›ืชื™ื‘ื” ืฉืื™ื ืŸ ืืœืคื‘ื™ืชื™ื•ืช ื™ืฉ ื“ืจื›ื™ื ืžืฉืœื”ืŸ ืœืกื“ืจ ืฉื•ืจื•ืช ืชื• ืื—ืจ ืชื• . ืœื“ื•ื’ืžื”, ื ื™ืชืŸ ืœืกื“ืจ ื”ื™ืจื•ื’ืœื™ืคื™ื ืœืคื™ ืกื’ื ื•ืŸ (ืžืคืชื—ื•ืช ืชื•ื•ื™ื ืกื™ื ื™ื™ื) ืื• ื‘ื”ื’ื™ื™ื”. ืœืžืขืŸ ื”ืืžืช, ืื™ืŸ ืœื™ ืžื•ืฉื’ ืื™ืš ืฆืจื™ืš ืœืกื“ืจ ืื™ืžื•ื’'ื™ื, ืื‘ืœ ืืชื” ื™ื›ื•ืœ ืœื”ืžืฆื™ื ืžืฉื”ื• ืขื‘ื•ืจื ื’ื.

ื‘ื”ืชื‘ืกืก ืขืœ ื”ืชื›ื•ื ื•ืช ื”ืžืคื•ืจื˜ื•ืช ืœืขื™ืœ, ื’ื•ื‘ืฉื• ื”ื“ืจื™ืฉื•ืช ื”ื‘ืกื™ืกื™ื•ืช ืœื”ืฉื•ื•ืืช ืžื—ืจื•ื–ื•ืช ื”ืžื‘ื•ืกืกื•ืช ืขืœ ื˜ื‘ืœืื•ืช Unicode:

  • ื”ืฉื•ื•ืืช ืžื—ืจื•ื–ื•ืช ืื™ื ื” ืชืœื•ื™ื” ื‘ืžื™ืงื•ื ื”ืชื•ื•ื™ื ื‘ื˜ื‘ืœืช ื”ืงื•ื“;
  • ืจืฆืคื™ื ืฉืœ ืชื•ื•ื™ื ื”ื™ื•ืฆืจื™ื ืชื• ื‘ื•ื“ื“ ืžืฆื˜ืžืฆืžื™ื ืœืฆื•ืจื” ืงื ื•ื ื™ืช (A + ื”ืขื™ื’ื•ืœ ื”ืขืœื™ื•ืŸ ื–ื”ื” ืœื–ื” ร…);
  • ื›ืืฉืจ ืžืฉื•ื•ื™ื ืžื—ืจื•ื–ื•ืช, ืชื• ื ื—ืฉื‘ ื‘ื”ืงืฉืจ ืฉืœ ื”ืžื—ืจื•ื–ืช ื•ื‘ืžื™ื“ืช ื”ืฆื•ืจืš ืžืฉื•ืœื‘ืช ืขื ืฉื›ื ื•ืชื™ื” ืœื™ื—ื™ื“ื” ืื—ืช ืฉืœ ื”ืฉื•ื•ืื” (Ch ื‘ืฆ'ื›ื™ืช) ืื• ืžื—ื•ืœืง ืœื›ืžื” (ร† ื‘ืฆืจืคืชื™ืช);
  • ื™ืฉ ืœื”ื’ื“ื™ืจ ืืช ื›ืœ ื”ืžืืคื™ื™ื ื™ื ื”ืœืื•ืžื™ื™ื (ืืœืคื‘ื™ืช, ืื•ืชื™ื•ืช ืจื™ืฉื™ื•ืช/ืงื˜ื ื•ืช, ืกื™ืžื ื™ ืคื™ืกื•ืง, ืกื“ืจ ืกื•ื’ื™ ื›ืชื™ื‘ื”) ืขื“ ืœื”ืงืฆืื” ื™ื“ื ื™ืช ืฉืœ ื”ืกื“ืจ (ืื™ืžื•ื’'ื™);
  • ื”ืฉื•ื•ืื” ื—ืฉื•ื‘ื” ืœื ืจืง ืœืžื™ื•ืŸ, ืืœื ื’ื ื‘ืžืงื•ืžื•ืช ืจื‘ื™ื ืื—ืจื™ื, ืœืžืฉืœ ืœืฆื™ื•ืŸ ื˜ื•ื•ื—ื™ ืฉื•ืจื•ืช (ื”ื—ืœืคืช {A... z} ื‘ ืœื—ื‘ื•ื˜);
  • ื”ื”ืฉื•ื•ืื” ืฆืจื™ื›ื” ืœื”ื™ืขืฉื•ืช ื“ื™ ืžื”ืจ.

ื‘ื ื•ืกืฃ, ืžื—ื‘ืจื™ ื”ื“ื•"ื— ื’ื™ื‘ืฉื• ืžืืคื™ื™ื ื™ ื”ืฉื•ื•ืื” ืฉืžืคืชื—ื™ ืืœื’ื•ืจื™ืชืžื™ื ืœื ืฆืจื™ื›ื™ื ืœื”ืกืชืžืš ืขืœื™ื”ื:

  • ืืœื’ื•ืจื™ืชื ื”ื”ืฉื•ื•ืื” ืœื ืฆืจื™ืš ืœื“ืจื•ืฉ ืงื‘ื•ืฆื” ื ืคืจื“ืช ืฉืœ ืชื•ื•ื™ื ืขื‘ื•ืจ ื›ืœ ืฉืคื” (ืฉืคื•ืช ืจื•ืกื™ืช ื•ืื•ืงืจืื™ื ื™ืช ื—ื•ืœืงื•ืช ืืช ืจื•ื‘ ื”ืชื•ื•ื™ื ื”ืงื™ืจื™ืœื™ื™ื);
  • ื”ื”ืฉื•ื•ืื” ืœื ืฆืจื™ื›ื” ืœื”ืกืชืžืš ืขืœ ืกื“ืจ ื”ืชื•ื•ื™ื ื‘ื˜ื‘ืœืื•ืช Unicode;
  • ืžืฉืงืœ ืžื—ืจื•ื–ืช ืœื ืืžื•ืจ ืœื”ื™ื•ืช ืชื›ื•ื ื” ืฉืœ ื”ืžื—ืจื•ื–ืช, ืฉื›ืŸ ืœืื•ืชื” ืžื—ืจื•ื–ืช ื‘ื”ืงืฉืจื™ื ืชืจื‘ื•ืชื™ื™ื ืฉื•ื ื™ื ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืžืฉืงืœื™ื ืฉื•ื ื™ื;
  • ืžืฉืงืœื™ ื”ืฉื•ืจื•ืช ื™ื›ื•ืœื™ื ืœื”ืฉืชื ื•ืช ื‘ืขืช ืžื™ื–ื•ื’ ืื• ืคื™ืฆื•ืœ (ืž x < y ื–ื” ืœื ื ื•ื‘ืข ืžื›ืš xz < yz);
  • ืžื—ืจื•ื–ื•ืช ืฉื•ื ื•ืช ื‘ืขืœื•ืช ืžืฉืงืœ ื–ื”ื” ื ื—ืฉื‘ื•ืช ืฉื•ื•ืช ืžื ืงื•ื“ืช ื”ืžื‘ื˜ ืฉืœ ืืœื’ื•ืจื™ืชื ื”ืžื™ื•ืŸ. ื”ืฆื’ืช ืกื“ืจ ื ื•ืกืฃ ืฉืœ ืžื—ืจื•ื–ื•ืช ื›ืืœื” ืืคืฉืจื™ืช, ืืš ื”ื™ื ืขืœื•ืœื” ืœืคื’ื•ืข ื‘ื‘ื™ืฆื•ืขื™ื;
  • ื‘ืžื”ืœืš ืžื™ื•ืŸ ื—ื•ื–ืจ, ื ื™ืชืŸ ืœื”ื—ืœื™ืฃ ืฉื•ืจื•ืช ืขื ืื•ืชื ืžืฉืงืœื™ื. ืขืžื™ื“ื” ื”ื™ื ืชื›ื•ื ื” ืฉืœ ืืœื’ื•ืจื™ืชื ืžื™ื•ืŸ ืกืคืฆื™ืคื™, ื•ืœื ืชื›ื•ื ื” ืฉืœ ืืœื’ื•ืจื™ืชื ื”ืฉื•ื•ืืช ืžื—ืจื•ื–ื•ืช (ืจืื” ื”ืคืกืงื” ื”ืงื•ื“ืžืช);
  • ื›ืœืœื™ ื”ืžื™ื•ืŸ ืขืฉื•ื™ื™ื ืœื”ืฉืชื ื•ืช ืขื ื”ื–ืžืŸ ื›ืืฉืจ ืžืกื•ืจื•ืช ืชืจื‘ื•ืชื™ื•ืช ืžืชืขื“ื ื•ืช/ืžืฉืชื ื•ืช.

ื›ืžื• ื›ืŸ ื ืงื‘ืข ืฉืืœื’ื•ืจื™ืชื ื”ื”ืฉื•ื•ืื” ืื™ื ื• ื™ื•ื“ืข ื“ื‘ืจ ืขืœ ื”ืกืžื ื˜ื™ืงื” ืฉืœ ื”ืžื—ืจื•ื–ื•ืช ื”ืžืขื•ื‘ื“ื•ืช. ืœืคื™ื›ืš, ืื™ืŸ ืœื”ืฉื•ื•ืช ืžื—ืจื•ื–ื•ืช ื”ืžื•ืจื›ื‘ื•ืช ืžืกืคืจื•ืช ื‘ืœื‘ื“ ื›ืžืกืคืจื™ื, ื•ื‘ืจืฉื™ืžื•ืช ืฉืœ ืฉืžื•ืช ื‘ืื ื’ืœื™ืช ืืช ื”ืžืืžืจ (ื”ื‘ื™ื˜ืœืก, ื”).

ืขืœ ืžื ืช ืœืกืคืง ืืช ื›ืœ ื”ื“ืจื™ืฉื•ืช ื”ืœืœื•, ืžื•ืฆืข ืืœื’ื•ืจื™ืชื ืžื™ื•ืŸ ื˜ื‘ืœืื•ืช ืžืจื•ื‘ื” ืจืžื•ืช (ืœืžืขืฉื” ืืจื‘ืข ืจืžื•ืช).

ื‘ืขื‘ืจ, ื”ืชื•ื•ื™ื ื‘ืžื—ืจื•ื–ืช ืžืฆื˜ืžืฆืžื™ื ืœืฆื•ืจื” ืงื ื•ื ื™ืช ื•ืžืงื•ื‘ืฆื™ื ืœื™ื—ื™ื“ื•ืช ื”ืฉื•ื•ืื”. ืœื›ืœ ื™ื—ื™ื“ืช ื”ืฉื•ื•ืื” ืžื•ืงืฆื™ื ืžืกืคืจ ืžืฉืงืœื™ื ื”ืชื•ืืžื™ื ืœืžืกืคืจ ืจืžื•ืช ื”ืฉื•ื•ืื”. ื”ืžืฉืงืœื™ื ืฉืœ ื™ื—ื™ื“ื•ืช ื”ืฉื•ื•ืื” ื”ื ืจื›ื™ื‘ื™ื ืฉืœ ืงื‘ื•ืฆื•ืช ืžืกื•ื“ืจื•ืช (ื‘ืžืงืจื” ื–ื”, ืžืกืคืจื™ื ืฉืœืžื™ื) ืฉื ื™ืชืŸ ืœื”ืฉื•ื•ืช ืขื‘ื•ืจ ืคื—ื•ืช ืื• ื™ื•ืชืจ. ืžืฉืžืขื•ืช ืžื™ื•ื—ื“ืช ื”ืชืขืœืžื• (0x0) ืคื™ืจื•ืฉื• ืฉื‘ืจืžืช ื”ื”ืฉื•ื•ืื” ื”ืžืงื‘ื™ืœื” ื™ื—ื™ื“ื” ื–ื• ืื™ื ื” ืžืขื•ืจื‘ืช ื‘ื”ืฉื•ื•ืื”. ื ื™ืชืŸ ืœื—ื–ื•ืจ ืขืœ ื”ืฉื•ื•ืื” ืฉืœ ืžื™ืชืจื™ื ืžืกืคืจ ืคืขืžื™ื, ืชื•ืš ืฉื™ืžื•ืฉ ื‘ืžืฉืงืœื™ื ืฉืœ ื”ืจืžื•ืช ื”ืžืชืื™ืžื•ืช. ื‘ื›ืœ ืจืžื”, ื”ืžืฉืงื•ืœื•ืช ืฉืœ ื™ื—ื™ื“ื•ืช ื”ื”ืฉื•ื•ืื” ืฉืœ ืฉืชื™ ืฉื•ืจื•ืช ืžื•ืฉื•ื•ืช ื–ื• ืœื–ื• ื‘ืจืฆืฃ.

ื‘ื™ื™ืฉื•ืžื™ื ืฉื•ื ื™ื ืฉืœ ื”ืืœื’ื•ืจื™ืชื ืœืžืกื•ืจื•ืช ืœืื•ืžื™ื•ืช ืฉื•ื ื•ืช, ืขืจื›ื™ ื”ืžืงื“ืžื™ื ืขืฉื•ื™ื™ื ืœื”ื™ื•ืช ืฉื•ื ื™ื, ืืš ืชืงืŸ Unicode ื›ื•ืœืœ ื˜ื‘ืœืช ืžืฉืงืœื™ื ื‘ืกื™ืกื™ืช - "ื˜ื‘ืœืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ืื™ืกื•ืฃ ืจื›ื™ื‘ื™ Unicode" (DUCET). ืื ื™ ืจื•ืฆื” ืœืฆื™ื™ืŸ ืฉื”ื’ื“ืจืช ื”ืžืฉืชื ื” LC_COLLATE ืžื”ื•ื•ื” ืœืžืขืฉื” ืื™ื ื“ื™ืงืฆื™ื” ืœื‘ื—ื™ืจืช ื˜ื‘ืœืช ื”ืžืฉืงืœ ื‘ืคื•ื ืงืฆื™ื™ืช ื”ืฉื•ื•ืืช ื”ืžื™ืชืจื™ื.

ืžืงื“ืžื™ ืžืฉืงืœ DUCET ืžืกื•ื“ืจ ื‘ืื•ืคืŸ ื”ื‘ื:

  • ื‘ืจืžื” ื”ืจืืฉื•ื ื”, ื›ืœ ื”ืื•ืชื™ื•ืช ืžืฆื˜ืžืฆืžื•ืช ืœืื•ืชื• ืจื™ืฉื™ื•ืช, ืกื™ืžื ื™ ืคื™ืกื•ืง ื ืžื—ืงื™ื, ืกื™ืžื ื™ ืคื™ืกื•ืง (ืœื ื›ื•ืœื) ืžืชืขืœืžื™ื;
  • ื‘ืจืžื” ื”ืฉื ื™ื™ื”, ืจืง ื“ื™ืืงืจื™ื˜ื™ื ื ืœืงื—ื™ื ื‘ื—ืฉื‘ื•ืŸ;
  • ื‘ืจืžื” ื”ืฉืœื™ืฉื™ืช, ืจืง ื”ืžืงืจื” ื ืœืงื— ื‘ื—ืฉื‘ื•ืŸ;
  • ื‘ืจืžื” ื”ืจื‘ื™ืขื™ืช, ืจืง ืกื™ืžื ื™ ืคื™ืกื•ืง ื ืœืงื—ื™ื ื‘ื—ืฉื‘ื•ืŸ.

ื”ื”ืฉื•ื•ืื” ืžืชื‘ืฆืขืช ื‘ื›ืžื” ืžืขื‘ืจื™ื: ืจืืฉื™ืช, ืžืฉื•ื•ื™ื ืืช ื”ืžืงื“ืžื™ื ืฉืœ ื”ืจืžื” ื”ืจืืฉื•ื ื”; ืื ื”ืžืฉืงื•ืœื•ืช ื—ื•ืคืคื•ืช, ืื–ื™ ืžืชื‘ืฆืขืช ื”ืฉื•ื•ืื” ื—ื•ื–ืจืช ืขื ื”ืžืฉืงื•ืœื•ืช ื‘ืจืžื” ื”ืฉื ื™ื™ื”; ื•ืื– ืื•ืœื™ ืฉืœื™ืฉ ื•ืจื‘ื™ืขื™.

ื”ื”ืฉื•ื•ืื” ืžืกืชื™ื™ืžืช ื›ืืฉืจ ื”ืฉื•ืจื•ืช ืžื›ื™ืœื•ืช ื™ื—ื™ื“ื•ืช ื”ืฉื•ื•ืื” ืชื•ืืžื•ืช ืขื ืžืฉืงืœื™ื ืฉื•ื ื™ื. ืฉื•ืจื•ืช ื‘ืขืœื•ืช ืžืฉืงืœ ืฉื•ื•ื” ื‘ื›ืœ ืืจื‘ืข ื”ืจืžื•ืช ื ื—ืฉื‘ื•ืช ืฉื•ื•ืช ื–ื• ืœื–ื•.

ื”ืืœื’ื•ืจื™ืชื ื”ื–ื” (ืขื ืฉืœืœ ืคืจื˜ื™ื ื˜ื›ื ื™ื™ื ื ื•ืกืคื™ื) ื ืชืŸ ืืช ื”ืฉื ืœื“ื•ื— ืžืก' 10 - "ืืœื’ื•ืจื™ืชื ืื™ืกื•ืฃ ื™ื•ื ื™ืงื•ื“" (ACU).

ื–ื” ื”ืžืงื•ื ืฉื‘ื• ื”ืชื ื”ื’ื•ืช ื”ืžื™ื•ืŸ ืžื”ื“ื•ื’ืžื” ืฉืœื ื• ื”ื•ืคื›ืช ืงืฆืช ื™ื•ืชืจ ื‘ืจื•ืจื”. ื–ื” ื™ื”ื™ื” ื ื—ืžื“ ืœื”ืฉื•ื•ืช ืื•ืชื• ืขื ืชืงืŸ Unicode.

ืœื‘ื“ื™ืงืช ื™ื™ืฉื•ืžื™ื ACU ื™ืฉ ืžื™ื•ื—ื“ ั‚ะตัั‚, ื‘ืืžืฆืขื•ืช ืงื•ื‘ืฅ ืžืฉืงื•ืœื•ืช, ื™ื™ืฉื•ื DUCET. ืืคืฉืจ ืœืžืฆื•ื ื›ืœ ืžื™ื ื™ ื“ื‘ืจื™ื ืžืฆื—ื™ืงื™ื ื‘ืงื•ื‘ืฅ ื”ืžืื–ื ื™ื™ื. ืœื“ื•ื’ืžื”, ื™ืฉ ืืช ืกื“ืจ ื”ืžื”ื’'ื•ื ื’ ื•ื”ื“ื•ืžื™ื ื• ื”ืื™ืจื•ืคืื™, ื›ืžื• ื’ื ืกื“ืจ ื”ื—ืœื™ืคื•ืช ื‘ื—ืคื™ืกืช ืงืœืคื™ื (ืกืžืœ 1F000 ื•ืขื•ื“). ื—ืœื™ืคื•ืช ื”ืงืœืคื™ื ืžืžื•ืงืžื•ืช ืœืคื™ ื›ืœืœื™ ื‘ืจื™ื“ื’' - PCBT, ื•ื”ืงืœืคื™ื ื‘ื—ืœื™ืคื” ื ืžืฆืื™ื ื‘ืจืฆืฃ T, 2,3, XNUMX...K.

ื‘ื“ื™ืงื” ื™ื“ื ื™ืช ืฉื”ืฉื•ืจื•ืช ืžืžื•ื™ื ื•ืช ื›ื”ืœื›ื” ืœืคื™ DUCET ื™ื”ื™ื” ื“ื™ ืžื™ื™ื’ืข, ืื‘ืœ, ืœืžื–ืœื ื•, ื™ืฉ ื™ื™ืฉื•ื ืœืžื•ืคืช ืฉืœ ื”ืกืคืจื™ื™ื” ืœืขื‘ื•ื“ื” ืขื Unicode - "ืจื›ื™ื‘ื™ื ื‘ื™ื ืœืื•ืžื™ื™ื ืœ- Unicode"(ื”ืžื—ืœืงื” ืœื˜ื™ืคื•ืœ ื ืžืจืฅ).

ื‘ืืชืจ ื”ืื™ื ื˜ืจื ื˜ ืฉืœ ืกืคืจื™ื™ื” ื–ื•, ืฉืคื•ืชื— ื‘ ื™ื‘ืž, ื™ืฉื ื ื“ืคื™ ื”ื“ื’ืžื”, ื›ื•ืœืœ ื“ืฃ ืืœื’ื•ืจื™ืชืžื™ื ืœื”ืฉื•ื•ืืช ืžื—ืจื•ื–ื•ืช. ืื ื—ื ื• ื ื›ื ืกื™ื ืœืฉื•ืจื•ืช ื”ื‘ื“ื™ืงื” ืฉืœื ื• ืขื ื”ื’ื“ืจื•ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื•ื”ื ื”, ืื ื—ื ื• ืžืงื‘ืœื™ื ืžื™ื•ืŸ ืจื•ืกื™ ืžื•ืฉืœื.

ะะฑะฐะบะฐะฝะพะฒ ะœะธั…ะฐะธะป;ะผะฐะปัั€
ะะปะบะธะฝะฐ ะญะปะปะฐ;ะบั€ะฐะฝะพะฒั‰ะธั†ะฐ
ะ˜ะฒะฐะฝะพะฒ ะะฝะดั€ะตะน;ัะปะตัะฐั€ัŒ
ะ˜ะฒะฐะฝะพะฒะฐ ะะปะปะฐ;ะฐะดะฒะพะบะฐั‚

ื“ืจืš ืื’ื‘, ื”ืืชืจ ื”ืžื—ืœืงื” ืœื˜ื™ืคื•ืœ ื ืžืจืฅ ื ื™ืชืŸ ืœืžืฆื•ื ื”ื‘ื”ืจื” ืฉืœ ืืœื’ื•ืจื™ืชื ื”ื”ืฉื•ื•ืื” ื‘ืขืช ืขื™ื‘ื•ื“ ืกื™ืžื ื™ ืคื™ืกื•ืง. ื‘ื“ื•ื’ืžืื•ืช ืฉืืœื•ืช ื ืคื•ืฆื•ืช ื‘ื ื•ืฉื ืื™ืกื•ืฃ ืžืชืขืœืžื™ื ืžื”ืื’ืจื” ื•ืžืงืฃ.

ื™ื•ื ื™ืงื•ื“ ืขื–ืจ ืœื ื•, ืื‘ืœ ื—ืคืฉ ืกื™ื‘ื•ืช ืœื”ืชื ื”ื’ื•ืช ืžื•ื–ืจื” sort ะฒ ืœื™ื ื•ืงืก ื™ืฆื˜ืจืš ืœืœื›ืช ืœืžืงื•ื ืื—ืจ.

ืžื™ื•ืŸ ื‘-glibc

ืชืฆื•ื’ื” ืžื”ื™ืจื” ืฉืœ ืงื•ื“ื™ ื”ืžืงื•ืจ ืฉืœ ื”ืฉื™ืจื•ืช sort ืฉืœ GNU Core Utils ื”ืจืื” ื›ื™ ื‘ื›ืœื™ ื”ืฉื™ืจื•ืช ืขืฆืžื•, ืœื•ืงืœื™ื–ืฆื™ื” ืžืกืชื›ืžืช ื‘ื”ื“ืคืกืช ื”ืขืจืš ื”ื ื•ื›ื—ื™ ืฉืœ ื”ืžืฉืชื ื” LC_COLLATE ื›ืืฉืจ ืคื•ืขืœ ื‘ืžืฆื‘ ื ื™ืคื•ื™ ื‘ืื’ื™ื:

$ sort --debug buhg.txt > buhg.srt
sort: using โ€˜en_US.UTF8โ€™ sorting rules

ื”ืฉื•ื•ืื•ืช ืžื—ืจื•ื–ื•ืช ืžืชื‘ืฆืขื•ืช ื‘ืืžืฆืขื•ืช ื”ืคื•ื ืงืฆื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช strcoll, ืžื” ืฉืื•ืžืจ ืฉื›ืœ ืžื” ืฉืžืขื ื™ื™ืŸ ื ืžืฆื ื‘ืกืคืจื™ื™ื” glibc.

ืขืœ ื•ื™ืงื™ ืคืจื•ื™ื™ืงื˜ glibc ืžื•ืงื“ืฉ ืœื”ืฉื•ื•ืืช ืžื—ืจื•ื–ื•ืช ืคืกืงื” ืื—ืช. ืžืคืกืงื” ื–ื• ื ื™ืชืŸ ืœื”ื‘ื™ืŸ ื›ื™ ื‘ glibc ื”ืžื™ื•ืŸ ืžื‘ื•ืกืก ืขืœ ืืœื’ื•ืจื™ืชื ืฉื›ื‘ืจ ื™ื“ื•ืข ืœื ื• ACU (ืืœื’ื•ืจื™ืชื ื”ืื™ืกื•ืฃ ืฉืœ Unicode) ื•/ืื• ื‘ืชืงืŸ ืงืจื•ื‘ ืืœื™ื• ISO 14651 (ื”ื–ืžื ื” ื•ื”ืฉื•ื•ืื” ื‘ื™ื ืœืื•ืžื™ืช ืฉืœ ืžื—ืจื•ื–ื•ืช). ืœื’ื‘ื™ ื”ืชืงืŸ ื”ืขื“ื›ื ื™, ื™ืฉ ืœืฆื™ื™ืŸ ื›ื™ ื‘ืืชืจ standards.iso.org ISO 14651 ื”ื•ื›ืจื– ืจืฉืžื™ืช ื›ื–ืžื™ืŸ ืœืฆื™ื‘ื•ืจ, ืืš ื”ืงื™ืฉื•ืจ ื”ืžืชืื™ื ืžื•ื‘ื™ืœ ืœื“ืฃ ืฉืื™ื ื• ืงื™ื™ื. ื’ื•ื’ืœ ืžื—ื–ื™ืจื” ืžืกืคืจ ืขืžื•ื“ื™ื ืขื ืงื™ืฉื•ืจื™ื ืœืืชืจื™ื ืจืฉืžื™ื™ื ืฉืžืฆื™ืขื™ื ืœืงื ื•ืช ืขื•ืชืง ืืœืงื˜ืจื•ื ื™ ืฉืœ ื”ืชืงืŸ ื‘ืžืื” ื™ื•ืจื•, ืื‘ืœ ื‘ืขืžื•ื“ ื”ืฉืœื™ืฉื™ ืื• ื”ืจื‘ื™ืขื™ ืฉืœ ืชื•ืฆืื•ืช ื”ื—ื™ืคื•ืฉ ื™ืฉ ื’ื ืงื™ืฉื•ืจื™ื ื™ืฉื™ืจื™ื ืœ PDF. ื‘ืื•ืคืŸ ื›ืœืœื™, ื”ืกื˜ื ื“ืจื˜ ื›ืžืขื˜ ืื™ื ื• ืฉื•ื ื” ืžืžื ื• ACU, ืื‘ืœ ืžืฉืขืžื ื™ื•ืชืจ ืœืงืจื™ืื” ื›ื™ ื”ื•ื ืื™ื ื• ืžื›ื™ืœ ื“ื•ื’ืžืื•ืช ื‘ืจื•ืจื•ืช ืœืžืืคื™ื™ื ื™ื ืœืื•ืžื™ื™ื ืฉืœ ืžื™ื•ืŸ ืžื—ืจื•ื–ื•ืช.

ื”ืžื™ื“ืข ื”ืžืขื ื™ื™ืŸ ื‘ื™ื•ืชืจ ืขืœ ื•ื™ืงื™ ื”ื™ื” ืงื™ืฉื•ืจ ืœ ืขื•ืงื‘ ืื—ืจ ื‘ืื’ื™ื ืขื ื“ื™ื•ืŸ ื‘ื™ื™ืฉื•ื ื”ืฉื•ื•ืืช ืžื—ืจื•ื–ื•ืช ื‘ glibc. ืžื”ื“ื™ื•ืŸ ื ื™ืชืŸ ืœืœืžื•ื“ ื–ืืช glibc ืžืฉืžืฉ ืœื”ืฉื•ื•ืืช ืžื—ืจื•ื–ื•ืช ISOืฉื•ืœื—ืŸ ืื™ืฉื™ ื˜ื‘ืœืช ื”ืชื‘ื ื™ื•ืช ื”ืžืฉื•ืชืคืช (CTT), ืฉืืช ื›ืชื•ื‘ืชื• ื ื™ืชืŸ ืœืžืฆื•ื ื‘ืืคืœื™ืงืฆื™ื” A ืชึถืงึถืŸ ISO 14651. ื‘ื™ืŸ 2000 ืœ-2015 ื”ื˜ื‘ืœื” ื”ื–ื• ื ื›ื ืกื” glibc ืœื ื”ื™ื” ืžืชื—ื–ืง ื•ื”ื™ื” ืฉื•ื ื” ืœืžื“ื™ (ืœืคื—ื•ืช ื—ื™ืฆื•ื ื™ืช) ืžื”ื’ืจืกื” ื”ื ื•ื›ื—ื™ืช ืฉืœ ื”ืชืงืŸ. ืžืฉื ืช 2015 ืขื“ 2018 ื”ืชืงื™ื™ืžื” ื”ืชืืžื” ืœื’ืจืกื” ื”ื—ื“ืฉื” ืฉืœ ื”ื˜ื‘ืœื”, ื•ืขื›ืฉื™ื• ื™ืฉ ืœืš ื”ื–ื“ืžื ื•ืช ืœืคื’ื•ืฉ ื‘ื—ื™ื™ื ื”ืืžื™ืชื™ื™ื ื’ืจืกื” ื—ื“ืฉื” ืฉืœ ื”ื˜ื‘ืœื” (CentOS 8), ื•ื–ืงืŸ (CentOS 7).

ื›ืขืช, ื›ืฉื™ืฉ ืœื ื• ืืช ื›ืœ ื”ืžื™ื“ืข ืขืœ ื”ืืœื’ื•ืจื™ืชื ื•ื˜ื‘ืœืื•ืช ื”ืขื–ืจ, ื ื•ื›ืœ ืœื—ื–ื•ืจ ืœื‘ืขื™ื” ื”ืžืงื•ืจื™ืช ื•ืœื”ื‘ื™ืŸ ื›ื™ืฆื“ ืœืžื™ื™ืŸ ื ื›ื•ืŸ ืžื—ืจื•ื–ื•ืช ื‘ืžืงื•ื ื”ืจื•ืกื™.

ISO 14651 / 14652

ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ ื”ื˜ื‘ืœื” ื‘ื” ืื ื• ืžืขื•ื ื™ื™ื ื™ื CTT ื‘ืจื•ื‘ ื”ื”ืคืฆื•ืช ืœื™ื ื•ืงืก ื ืžืฆื ื‘ืงื˜ืœื•ื’ /usr/share/i18n/locales/. ื”ื˜ื‘ืœื” ืขืฆืžื” ื ืžืฆืืช ื‘ืงื•ื‘ืฅ iso14651_t1_common. ืื– ื–ื• ื”ื ื—ื™ื™ืช ื”ืงื‘ืฆื™ื ื”ืขืชืง ืืช iso14651_t1_common ื›ืœื•ืœ ื‘ืงื•ื‘ืฅ iso14651_t1, ืืฉืจ, ื‘ืชื•ืจื•, ื ื›ืœืœ ื‘ืชื™ืงื™ื ืœืื•ืžื™ื™ื, ืœืจื‘ื•ืช en_US ะธ ru_RU. ื‘ืจื•ื‘ ื”ื”ืคืฆื•ืช ืœื™ื ื•ืงืก ื›ืœ ืงื‘ืฆื™ ื”ืžืงื•ืจ ื›ืœื•ืœื™ื ื‘ื”ืชืงื ื” ื”ื‘ืกื™ืกื™ืช, ืืš ืื ื”ื ืื™ื ื ืงื™ื™ืžื™ื, ืชืฆื˜ืจืš ืœื”ืชืงื™ืŸ ื—ื‘ื™ืœื” ื ื•ืกืคืช ืžื”ื”ืคืฆื”.

ืžื‘ื ื” ื”ืงื•ื‘ืฅ iso14651_t1 ืื•ืœื™ ื ืจืื” ืžืื•ื“ ืžื™ืœื•ืœื™, ืขื ื›ืœืœื™ื ืœื ื‘ืจื•ืจื™ื ืœื‘ื ื™ื™ืช ืฉืžื•ืช, ืื‘ืœ ืื ืžืกืชื›ืœื™ื ืขืœ ื–ื”, ื”ื›ืœ ื“ื™ ืคืฉื•ื˜. ื”ืžื‘ื ื” ืžืชื•ืืจ ื‘ืชืงืŸ ISO 14652, ืขื•ืชืง ืฉืœื• ื ื™ืชืŸ ืœื”ื•ืจื™ื“ ืžื”ืืชืจ open-std.org. ื ื™ืชืŸ ืœืงืจื•ื ืชื™ืื•ืจ ื ื•ืกืฃ ืฉืœ ืคื•ืจืžื˜ ื”ืงื•ื‘ืฅ ืžืคืจื˜ื™ื POSIX ืž ืงื‘ื•ืฆืช ืคืชื•ื—. ื›ื—ืœื•ืคื” ืœืงืจื™ืืช ื”ืชืงืŸ, ื ื™ืชืŸ ืœืœืžื•ื“ ืืช ืงื•ื“ ื”ืžืงื•ืจ ืฉืœ ื”ืคื•ื ืงืฆื™ื” collate_read ะฒ glibc/locale/programs/ld-collate.c.

ืžื‘ื ื” ื”ืงื•ื‘ืฅ ื ืจืื” ื›ืš:

ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื”ืชื• ืžืฉืžืฉ ื›ืชื• ื‘ืจื™ื—ื”, ื•ืกื•ืฃ ื”ืฉื•ืจื” ืื—ืจื™ ื”ืชื• # ื”ื•ื ื”ืขืจื”. ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืžื—ื“ืฉ ืืช ืฉื ื™ ื”ืกืžืœื™ื, ื•ื–ื” ืžื” ืฉื ืขืฉื” ื‘ื’ืจืกื” ื”ื—ื“ืฉื” ืฉืœ ื”ื˜ื‘ืœื”:

escape_char /
comment_char %

ื”ืงื•ื‘ืฅ ื™ื›ื™ืœ ืืกื™ืžื•ื ื™ื ื‘ืคื•ืจืžื˜ ืื• (ืื™ืคื” x - ืกืคืจื” ื”ืงืกื“ืฆื™ืžืœื™ืช). ื–ื”ื• ื”ื™ื™ืฆื•ื’ ื”ื”ืงืกื“ืฆื™ืžืœื™ ืฉืœ ื ืงื•ื“ื•ืช ืงื•ื“ Unicode ื‘ืงื™ื“ื•ื“ UCS-4 (UTF-32). ื›ืœ ืฉืืจ ื”ืืœืžื ื˜ื™ื ื‘ืกื•ื’ืจื™ื™ื ื–ื•ื•ื™ืช (ื›ื•ืœืœ , ื•ื›ื“ื•ืžื”) ื ื—ืฉื‘ื™ื ืงื‘ื•ืขื™ ืžื—ืจื•ื–ืช ืคืฉื•ื˜ื™ื ืฉื™ืฉ ืœื”ื ืžืขื˜ ืžืฉืžืขื•ืช ืžื—ื•ืฅ ืœื”ืงืฉืจ.

ืžื—ืจื•ื–ืช LC_COLLATE ืื•ืžืจ ืœื ื• ืฉืœืื—ืจ ืžื›ืŸ ืžืชื—ื™ืœื™ื ื”ื ืชื•ื ื™ื ื”ืžืชืืจื™ื ืืช ื”ื”ืฉื•ื•ืื” ืฉืœ ืžื—ืจื•ื–ื•ืช.

ืจืืฉื™ืช, ืžืฆื•ื™ื ื™ื ืฉืžื•ืช ืขื‘ื•ืจ ื”ืžืฉืงื•ืœื•ืช ื‘ื˜ื‘ืœืช ื”ื”ืฉื•ื•ืื” ื•ืฉืžื•ืช ืขื‘ื•ืจ ืฆื™ืจื•ืคื™ ื”ืกืžืœื™ื. ื‘ืื•ืคืŸ ื›ืœืœื™, ืฉื ื™ ืกื•ื’ื™ ื”ืฉืžื•ืช ืฉื™ื™ื›ื™ื ืœืฉืชื™ ื™ืฉื•ื™ื•ืช ืฉื•ื ื•ืช, ืืš ื‘ืงื•ื‘ืฅ ื‘ืคื•ืขืœ ื”ื ืžืขื•ืจื‘ื™ื. ืฉืžื•ืช ื”ืžืฉืงื•ืœื•ืช ืžืฆื•ื™ื ื™ื ืขืœ ื™ื“ื™ ืžื™ืœืช ื”ืžืคืชื— ืื™ืกื•ืฃ-ืกืžืœ (ืชื• ื”ืฉื•ื•ืื”) ื›ื™ ื‘ืขืช ื”ื”ืฉื•ื•ืื”, ืชื•ื•ื™ Unicode ื‘ืขืœื™ ืžืฉืงืœ ื–ื”ื” ื™ื™ื—ืฉื‘ื• ืœืชื•ื•ื™ื ืฉื•ื•ืช ืขืจืš.

ื”ืื•ืจืš ื”ื›ื•ืœืœ ืฉืœ ื”ืงื˜ืข ื‘ื’ืจืกื” ื”ื ื•ื›ื—ื™ืช ืฉืœ ื”ืงื•ื‘ืฅ ื”ื•ื ื›-900 ืฉื•ืจื•ืช. ืฉืœืคืชื™ ื“ื•ื’ืžืื•ืช ืžื›ืžื” ืžืงื•ืžื•ืช ื›ื“ื™ ืœื”ืจืื•ืช ืืช ื”ืฉืจื™ืจื•ืชื™ื•ืช ืฉืœ ืฉืžื•ืช ื•ื›ืžื” ืกื•ื’ื™ื ืฉืœ ืชื—ื‘ื™ืจ.

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>"

  • ืื™ืกื•ืฃ-ืกืžืœ ืจื•ืฉื ืžื—ืจื•ื–ืช ืื•ืกืžื ื™ื” ื‘ื˜ื‘ืœืช ื”ืฉืžื•ืช ืฉืœ ืกื•ืœืžื•ืช
  • ืื™ืกื•ืฃ-ืกืžืœ .. ืจื•ืฉื ืจืฆืฃ ืฉืœ ืฉืžื•ืช ื”ืžื•ืจื›ื‘ ืžืงื™ื“ื•ืžืช S ื•ืกื™ื•ืžืช ืžืกืคืจื™ืช ื”ืงืกื“ืฆื™ืžืœื™ืช ืž 1D000 ะดะพ 1D35F.
  • ืค ืค ืค ืค ะฒ ืื™ืกื•ืฃ-ืกืžืœ ื ืจืื” ื›ืžื• ืžืกืคืจ ืฉืœื ื’ื“ื•ืœ ืœืœื ืกื™ืžืŸ ื‘ื”ืงืกื“ืฆื™ืžืœื™, ืื‘ืœ ื–ื” ืจืง ืฉื ืฉืขืฉื•ื™ ืœื”ื™ืจืื•ืช ื›ืžื•
  • ืฉื ืคื™ืจื•ืฉื• ื ืงื•ื“ืช ืงื•ื“ ื‘ืงื™ื“ื•ื“ UCS-4
  • ืืœืžื ื˜ ืื™ืกื•ืฃ ืž " " ืจื•ืฉื ืฉื ื—ื“ืฉ ืœื–ื•ื’ ื ืงื•ื“ื•ืช Unicode.

ืœืื—ืจ ื”ื’ื“ืจืช ืฉืžื•ืช ื”ืžืฉืงื•ืœื•ืช, ื™ืฆื•ื™ื ื• ื”ืžืฉืงื•ืœื•ืช ื‘ืคื•ืขืœ. ืžื›ื™ื•ื•ืŸ ืฉืจืง ื™ื—ืกื™ื ื’ื“ื•ืœื™ื ืžืคื—ื•ืช ื—ืฉื•ื‘ื™ื ื‘ื”ืฉื•ื•ืื”, ื”ืžืฉืงื•ืœื•ืช ื ืงื‘ืขื•ืช ืขืœ ื™ื“ื™ ืจืฆืฃ ืคืฉื•ื˜ ืฉืœ ืฉืžื•ืช ืจื™ืฉื•ื. ื”ืžืฉืงื•ืœื•ืช ื”"ืงืœื•ืช" ื™ื•ืชืจ ืžื•ืคื™ืขื•ืช ืชื—ื™ืœื”, ื•ืœืื—ืจ ืžื›ืŸ ื”"ื›ื‘ื“ื•ืช" ื™ื•ืชืจ. ื”ืจืฉื• ืœื™ ืœื”ื–ื›ื™ืจ ืœื›ื ืฉืœื›ืœ ืชื• Unicode ืžื•ืงืฆื™ื ืืจื‘ืขื” ืžืฉืงืœื™ื ืฉื•ื ื™ื. ื›ืืŸ ื”ื ืžืฉื•ืœื‘ื™ื ืœืจืฆืฃ ืžืกื•ื“ืจ ืื—ื“. ื‘ืชื™ืื•ืจื™ื”, ื›ืœ ืฉื ืกืžืœื™ ื™ื›ื•ืœ ืœืฉืžืฉ ื‘ื›ืœ ืื—ืช ืžืืจื‘ืข ื”ืจืžื•ืช, ืืš ื”ืขืจื•ืช ืžืฆื‘ื™ืขื•ืช ืขืœ ื›ืš ืฉื”ืžืคืชื—ื™ื ืžืคืจื™ื“ื™ื ืฉืžื•ืช ืœืจืžื•ืช.

% 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

ืœื‘ืกื•ืฃ, ื˜ื‘ืœืช ื”ืžืฉืงื•ืœื•ืช ื‘ืคื•ืขืœ.

ืงื˜ืข ื”ืžืฉืงื•ืœื•ืช ืžื•ืงืฃ ื‘ืฉื•ืจื•ืช ืžื™ืœื•ืช ืžืคืชื— order_start ะธ order_end. ืืคืฉืจื•ื™ื•ืช ื ื•ืกืคื•ืช order_start ืœืงื‘ื•ืข ื‘ืื™ื–ื” ื›ื™ื•ื•ืŸ ืฉื•ืจื•ืช ื ืกืจืงื•ืช ื‘ื›ืœ ืจืžืช ื”ืฉื•ื•ืื”. ื”ื’ื“ืจืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื™ื ืงึธื“ึดื™ืžึธื”. ื’ื•ืฃ ื”ืงื˜ืข ืžื•ืจื›ื‘ ืžืฉื•ืจื•ืช ื”ืžื›ื™ืœื•ืช ืืช ืงื•ื“ ื”ืกืžืœ ื•ืืช ืืจื‘ืขืช ืžืฉืงืœื™ื•. ืงื•ื“ ื”ืชื• ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžื™ื•ืฆื’ ืขืœ ื™ื“ื™ ื”ืชื• ืขืฆืžื•, ื ืงื•ื“ืช ืงื•ื“ ืื• ืฉื ืกืžืœื™ ืฉื”ื•ื’ื“ืจ ืงื•ื“ื ืœื›ืŸ. ื ื™ืชืŸ ืœืชืช ืžืฉืงืœื™ื ื’ื ืœืฉืžื•ืช ืกืžืœื™ื™ื, ืœื ืงื•ื“ื•ืช ืงื•ื“ ืื• ืœืกืžืœื™ื ืขืฆืžื. ืื ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื ืงื•ื“ื•ืช ืงื•ื“ ืื• ืชื•ื•ื™ื, ืžืฉืงืœืŸ ื–ื”ื” ืœืขืจืš ื”ืžืกืคืจื™ ืฉืœ ื ืงื•ื“ืช ื”ืงื•ื“ (ืžื™ืงื•ื ื‘ื˜ื‘ืœืช Unicode). ืชื•ื•ื™ื ืฉืœื ืฆื•ื™ื ื• ื‘ืžืคื•ืจืฉ (ื›ืคื™ ืฉื”ื‘ื ืชื™) ื ื—ืฉื‘ื•ืช ืœืžื•ืงืฆื•ืช ืœื˜ื‘ืœื” ืขื ืžืฉืงืœ ืจืืฉื™ ื”ืชื•ืื ืืช ื”ืžื™ืงื•ื ื‘ื˜ื‘ืœืช Unicode. ืขืจืš ืžืฉืงืœ ืžื™ื•ื—ื“ ืœื”ืชืขืœื ืคื™ืจื•ืฉื• ืฉืžืชืขืœืžื™ื ืžื”ืกืžืœ ื‘ืจืžืช ื”ื”ืฉื•ื•ืื” ื”ืžืชืื™ืžื”.

ื›ื“ื™ ืœื”ื“ื’ื™ื ืืช ืžื‘ื ื” ื”ืžืื–ื ื™ื™ื, ื‘ื—ืจืชื™ ืฉืœื•ืฉื” ืฉื‘ืจื™ื ื‘ืจื•ืจื™ื ืœืžื“ื™:

  • ื“ืžื•ื™ื•ืช ืฉืžืชืขืœืžื•ืช ืžื”ืŸ ืœื—ืœื•ื˜ื™ืŸ
  • ืกืžืœื™ื ืฉื•ื•ื™ื ืœืžืกืคืจ ืฉืœื•ืฉ ื‘ืฉืชื™ ื”ืจืžื•ืช ื”ืจืืฉื•ื ื•ืช
  • ืชื—ื™ืœืชื• ืฉืœ ื”ืืœืคื‘ื™ืช ื”ืงื™ืจื™ืœื™, ืฉืื™ื ื• ืžื›ื™ืœ ื“ื™ืืงืจื™ื˜ื™ื, ื•ืœื›ืŸ ืžืžื•ื™ืŸ ื‘ืขื™ืงืจ ืœืคื™ ื”ืจืžื” ื”ืจืืฉื•ื ื” ื•ื”ืฉืœื™ืฉื™ืช.

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

ื›ืขืช ื ื™ืชืŸ ืœื—ื–ื•ืจ ืœืžื™ื•ืŸ ื”ื“ื•ื’ืžืื•ืช ืžืชื—ื™ืœืช ื”ืžืืžืจ. ื”ืžืืจื‘ ื ืžืฆื ื‘ื—ืœืง ื”ื–ื” ืฉืœ ื˜ื‘ืœืช ื”ืžืฉืงื•ืœื•ืช:

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

ื ื™ืชืŸ ืœืจืื•ืช ืฉื‘ื˜ื‘ืœื” ื–ื• ืกื™ืžื ื™ ื”ืคื™ืกื•ืง ืžื”ื˜ื‘ืœื” ASCII (ื›ื•ืœืœ ืจื•ื•ื—) ื›ืžืขื˜ ืชืžื™ื“ ืžืชืขืœืžื™ื ื‘ืขืช ื”ืฉื•ื•ืืช ืžื—ืจื•ื–ื•ืช. ื™ื•ืฆืื™ ื”ื“ื•ืคืŸ ื”ื™ื—ื™ื“ื™ื ื”ื ืงื•ื•ื™ื ืฉืžืชื•ืืžื™ื ื‘ื›ืœ ื“ื‘ืจ ืžืœื‘ื“ ืกื™ืžื ื™ ืคื™ืกื•ืง ืฉื ืžืฆืื• ื‘ืžื™ืงื•ืžื™ื ืชื•ืืžื™ื. ื”ืฉื•ืจื•ืช ืžื”ื“ื•ื’ืžื” ืฉืœื™ (ืœืื—ืจ ืžื™ื•ืŸ) ืขื‘ื•ืจ ืืœื’ื•ืจื™ืชื ื”ื”ืฉื•ื•ืื” ื ืจืื•ืช ื›ืš:

ะะฑะฐะบะฐะฝะพะฒะœะธั…ะฐะธะปะผะฐะปัั€
ะะปะบะธะฝะฐะญะปะปะฐะบั€ะฐะฝะพะฒั‰ะธั†ะฐ
ะ˜ะฒะฐะฝะพะฒะฐะะปะปะฐะผะฐะปัั€
ะ˜ะฒะฐะฝะพะฒะะฝะดั€ะตะนัะปะตัะฐั€ัŒ

ื‘ื”ืชื—ืฉื‘ ื‘ื›ืš ืฉื‘ื˜ื‘ืœืช ื”ืกื•ืœืžื•ืช, ืื•ืชื™ื•ืช ื’ื“ื•ืœื•ืช ื‘ืจื•ืกื™ืช ื‘ืื•ืช ืื—ืจื™ ืื•ืชื™ื•ืช ืงื˜ื ื•ืช (ื‘ืจืžื” ื”ืฉืœื™ืฉื™ืช ื›ื‘ื“ ื™ื•ืชืจ ืž ), ื”ืžื™ื•ืŸ ื ืจืื” ื ื›ื•ืŸ ืœื—ืœื•ื˜ื™ืŸ.

ื‘ืขืช ื”ื’ื“ืจืช ืžืฉืชื ื” LC_COLLATE=C ื ื˜ืขืŸ ื˜ื‘ืœื” ืžื™ื•ื—ื“ืช ื”ืžืฆื™ื™ื ืช ื”ืฉื•ื•ืื” ืฉืœ ื‘ืชื™ื-ื‘ืชื™ื

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'
};

ืžื›ื™ื•ื•ืŸ ืฉื‘-Unicode ื ืงื•ื“ืช ื”ืงื•ื“ ะ ืžื’ื™ืขื” ืœืคื ื™ A, ื”ืžื—ืจื•ื–ื•ืช ืžืžื•ื™ื ื•ืช ื‘ื”ืชืื.

ื˜ืงืกื˜ ื•ื˜ื‘ืœืื•ืช ื‘ื™ื ืืจื™ื•ืช

ื‘ืจื•ืจ ืฉื”ืฉื•ื•ืืช ืžื—ืจื•ื–ื•ืช ื”ื™ื ืคืขื•ืœื” ื ืคื•ืฆื” ื‘ื™ื•ืชืจ, ื•ื ื™ืชื•ื— ื˜ื‘ืœืื•ืช CTT ื”ืœื™ืš ื“ื™ ื™ืงืจ. ื›ื“ื™ ืœื™ื™ืขืœ ืืช ื”ื’ื™ืฉื” ืœื˜ื‘ืœื”, ื”ื™ื ืžื•ืจื›ื‘ืช ื‘ืฆื•ืจื” ื‘ื™ื ืืจื™ืช ืขื ื”ืคืงื•ื“ื” localdef.

ืงื‘ื•ืฆื” localdef ืžืงื‘ืœ ื›ืคืจืžื˜ืจื™ื ืงื•ื‘ืฅ ืขื ื˜ื‘ืœืช ืžืืคื™ื™ื ื™ื ืœืื•ืžื™ื™ื (ืืคืฉืจื•ืช -i), ืฉื‘ื• ื›ืœ ื”ืชื•ื•ื™ื ืžื™ื•ืฆื’ื™ื ืขืœ ื™ื“ื™ ื ืงื•ื“ื•ืช Unicode, ื•ืงื•ื‘ืฅ ื”ืชืืžื” ื‘ื™ืŸ ื ืงื•ื“ื•ืช Unicode ื•ืชื•ื•ื™ื ืฉืœ ืงื™ื“ื•ื“ ืกืคืฆื™ืคื™ (ืืคืฉืจื•ืช -f). ื›ืชื•ืฆืื” ืžื”ืขื‘ื•ื“ื”, ื ื•ืฆืจื™ื ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื ืขื‘ื•ืจ ื”ืžืงื•ื ืขื ื”ืฉื ืฉืฆื•ื™ืŸ ื‘ืคืจืžื˜ืจ ื”ืื—ืจื•ืŸ.

ื’ืœื™ื‘ืง ืชื•ืžืš ื‘ืฉื ื™ ืคื•ืจืžื˜ื™ื ืฉืœ ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื: "ืžืกื•ืจืชื™" ื•"ืžื•ื“ืจื ื™".

ื”ืคื•ืจืžื˜ ื”ืžืกื•ืจืชื™ ืื•ืžืจ ืฉืฉื ื”ืžืงื•ื ื”ื•ื ื”ืฉื ืฉืœ ืกืคืจื™ื™ืช ื”ืžืฉื ื” ื‘ /usr/lib/locale/. ืกืคืจื™ื™ืช ืžืฉื ื” ื–ื• ืžืื—ืกื ืช ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื LC_COLLATE, LC_CTYPE, LC_TIME ื•ื›ื•ืœื™. ืงื•ึนื‘ึถืฅ LC_IDENTIFICATION ืžื›ื™ืœ ืืช ื”ืฉื ื”ืจืฉืžื™ ืฉืœ ื”ืžืงื•ื (ืฉืขืฉื•ื™ ืœื”ื™ื•ืช ืฉื•ื ื” ืžืฉื ื”ืกืคืจื™ื™ื”) ื•ื”ืขืจื•ืช.

ื”ืคื•ืจืžื˜ ื”ืžื•ื“ืจื ื™ ื›ื•ืœืœ ืื—ืกื•ืŸ ื›ืœ ื”ืื–ื•ืจื™ื ื‘ืืจื›ื™ื•ืŸ ืื—ื“ /usr/lib/locale/locale-archive, ืืฉืจ ืžืžื•ืคื” ืœื–ื™ื›ืจื•ืŸ ื”ื•ื™ืจื˜ื•ืืœื™ ืฉืœ ื›ืœ ื”ืชื”ืœื™ื›ื™ื ื”ืžืฉืชืžืฉื™ื glibc. ืฉื ื”ืžืงื•ื ื‘ืคื•ืจืžื˜ ื”ืžื•ื“ืจื ื™ ื›ืคื•ืฃ ืœืงื ื•ื ื™ื–ืฆื™ื” ืžืกื•ื™ืžืช - ืจืง ืžืกืคืจื™ื ื•ืื•ืชื™ื•ืช ืžื•ืคื—ืชื™ื ืœืื•ืชื™ื•ืช ืงื˜ื ื•ืช ื ืฉืืจื•ืช ื‘ืฉืžื•ืช ื”ืงื™ื“ื•ื“. ื›ืš ru_RU.KOI8-R, ื™ื™ืฉืžืจ ื‘ืฉื ru_RU.koi8r.

ืงื‘ืฆื™ ืงืœื˜ ืžืชื‘ืฆืขื™ื ื‘ื—ื™ืคื•ืฉ ื‘ืกืคืจื™ื™ื” ื”ื ื•ื›ื—ื™ืช, ื›ืžื• ื’ื ื‘ืกืคืจื™ื•ืช /usr/share/i18n/locales/ ะธ /usr/share/i18n/charmaps/ ืขื‘ื•ืจ ืงื‘ืฆื™ื CTT ื•ืงื‘ืฆื™ ืงื™ื“ื•ื“, ื‘ื”ืชืืžื”.

ืœืžืฉืœ, ื”ืคืงื•ื“ื”

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

ื™ืจื›ื™ื‘ ืืช ื”ืงื•ื‘ืฅ /usr/share/i18n/locales/ru_RU ื‘ืืžืฆืขื•ืช ืงื•ื‘ืฅ ืงื™ื“ื•ื“ /usr/share/i18n/charmaps/MAC-CYRILLIC.gz ื•ืฉืžื•ืจ ืืช ื”ืชื•ืฆืื” ื‘ /usr/lib/locale/locale-archive ืชื—ืช ื”ืฉื ru_RU.maccyrillic

ืื ืชื’ื“ื™ืจ ืืช ื”ืžืฉืชื ื” LANG = en_US.UTF-8 ั‚ะพ glibc ื™ื—ืคืฉ ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื ืžืงื•ืžื™ื™ื ื‘ืจืฆืฃ ื”ื‘ื ืฉืœ ืงื‘ืฆื™ื ื•ืกืคืจื™ื•ืช:

/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/

ืื ืžืงื•ื ืžืชืจื—ืฉ ื‘ืคื•ืจืžื˜ื™ื ืžืกื•ืจืชื™ื™ื ื•ืžื•ื“ืจื ื™ื™ื ื›ืื—ื“, ื ื™ืชื ืช ืขื“ื™ืคื•ืช ืœื–ื” ื”ืžื•ื“ืจื ื™.

ืืชื” ื™ื›ื•ืœ ืœื”ืฆื™ื’ ืืช ืจืฉื™ืžืช ื”ืžืงื•ืžื•ืช ื”ืงื•ืžืคื™ืœื™ื™ื ืขื ื”ืคืงื•ื“ื” ืื–ื•ืจ - ื.

ื”ื›ื ืช ื˜ื‘ืœืช ื”ื”ืฉื•ื•ืื” ืฉืœืš

ื›ืขืช, ื—ืžื•ืฉ ื‘ื™ื“ืข, ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ื˜ื‘ืœืช ื”ืฉื•ื•ืืช ืžื—ืจื•ื–ื•ืช ื”ืื™ื“ื™ืืœื™ืช ืฉืœืš. ื˜ื‘ืœื” ื–ื• ืฆืจื™ื›ื” ืœื”ืฉื•ื•ืช ื ื›ื•ืŸ ืื•ืชื™ื•ืช ืจื•ืกื™ื•ืช, ื›ื•ืœืœ ื”ืื•ืช ะ, ื•ื‘ื• ื–ืžื ื™ืช ืœืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ืกื™ืžื ื™ ืคื™ืกื•ืง ื‘ื”ืชืื ืœื˜ื‘ืœื” ASCII.

ืชื”ืœื™ืš ื”ื›ื ืช ื˜ื‘ืœืช ืžื™ื•ืŸ ืžืฉืœืš ืžื•ืจื›ื‘ ืžืฉื ื™ ืฉืœื‘ื™ื: ืขืจื™ื›ืช ื˜ื‘ืœืช ื”ืžืฉืงื•ืœื•ืช ื•ื”ืจื›ื‘ืชื” ืœืฆื•ืจื” ื‘ื™ื ืืจื™ืช ืขื ื”ืคืงื•ื“ื” localdef.

ืขืœ ืžื ืช ืฉื˜ื‘ืœืช ื”ื”ืฉื•ื•ืื” ืชื”ื™ื” ืžื•ืชืืžืช ื‘ืขืœื•ื™ื•ืช ืขืจื™ื›ื” ืžื™ื ื™ืžืœื™ื•ืช, ื‘ืคื•ืจืžื˜ ISO 14652 ืžืกื•ืคืงื™ื ืกืขื™ืคื™ื ืœื”ืชืืžืช ืžืฉืงืœื™ื ืฉืœ ื˜ื‘ืœื” ืงื™ื™ืžืช. ื”ืงื˜ืข ืžืชื—ื™ืœ ื‘ืžื™ืœืช ืžืคืชื— ืกื“ืจ ืžื—ื“ืฉ-ืื—ืจื™ ื•ืฆื™ื•ืŸ ื”ืžื™ืงื•ื ืฉืœืื—ืจื™ื• ืžืชื‘ืฆืขืช ื”ื”ื—ืœืคื”. ื”ืงื˜ืข ืžืกืชื™ื™ื ื‘ืฉื•ืจื” ืกื™ื•ื ืกื“ืจ ืžื—ื“ืฉ. ืื ื™ืฉ ืฆื•ืจืš ืœืชืงืŸ ืžืกืคืจ ืกืขื™ืคื™ื ื‘ื˜ื‘ืœื”, ื ื•ืฆืจ ืกืขื™ืฃ ืขื‘ื•ืจ ื›ืœ ืกืขื™ืฃ ื›ื–ื”.

ื”ืขืชืงืชื™ ื’ืจืกืื•ืช ื—ื“ืฉื•ืช ืฉืœ ื”ืงื‘ืฆื™ื iso14651_t1_common ะธ ru_RU ืžื”ืžืื’ืจ glibc ืœืกืคืจื™ื™ืช ื”ื‘ื™ืช ืฉืœื™ ~/.local/share/i18n/locales/ ื•ืขืจื›ืช ืžืขื˜ ืืช ื”ืงื˜ืข LC_COLLATE ะฒ ru_RU. ื’ืจืกืื•ืช ื—ื“ืฉื•ืช ืฉืœ ืงื‘ืฆื™ื ืชื•ืืžื•ืช ืœื—ืœื•ื˜ื™ืŸ ืœื’ืจืกื” ืฉืœื™ glibc. ืื ืชืจืฆื• ืœื”ืฉืชืžืฉ ื‘ื’ืจืกืื•ืช ื™ืฉื ื•ืช ื™ื•ืชืจ ืฉืœ ืงื‘ืฆื™ื, ืชืฆื˜ืจื›ื• ืœืฉื ื•ืช ืืช ื”ืฉืžื•ืช ื”ืกืžืœื™ื™ื ื•ืืช ื”ืžืงื•ื ื‘ื• ืžืชื—ื™ืœื” ื”ื”ื—ืœืคื” ื‘ื˜ื‘ืœื”.

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

ืœืžืขืฉื”, ื™ื”ื™ื” ืฆื•ืจืš ืœืฉื ื•ืช ืืช ื”ืฉื“ื•ืช ื‘ LC_IDENTIFICATION ื›ื“ื™ ืฉื™ืฆื‘ื™ืขื• ืขืœ ื”ืžืงื•ื ru_MY, ืื‘ืœ ื‘ื“ื•ื’ืžื” ืฉืœื™ ื–ื” ืœื ื”ื™ื” ื ื“ืจืฉ, ืžื›ื™ื•ื•ืŸ ืฉืœื ื”ื›ืœืœืช ืืช ื”ืืจื›ื™ื•ืŸ ืžื”ื—ื™ืคื•ืฉ ืื—ืจ ืžืงื•ืžื•ืช locale-archive.

ื›ื™ localdef ืขื‘ื“ ืขื ืงื‘ืฆื™ื ื‘ืชื™ืงื™ื™ื” ืฉืœื™ ื“ืจืš ืžืฉืชื ื” I18NPATH ืืชื” ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ ืกืคืจื™ื™ื” ื ื•ืกืคืช ืœื—ื™ืคื•ืฉ ืงื‘ืฆื™ ืงืœื˜, ื•ื ื™ืชืŸ ืœืฆื™ื™ืŸ ืืช ื”ืกืคืจื™ื™ื” ืœืฉืžื™ืจืช ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื ื›ื ืชื™ื‘ ืขื ืงื•ื•ื™ื ืœื•ื›ืกื ื™ื™ื:

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

POSIX ืžื ื™ื— ืฉื‘ ืฉืคื” ืืชื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ ื ืชื™ื‘ื™ื ืžื•ื—ืœื˜ื™ื ืœืกืคืจื™ื•ืช ืขื ืงื‘ืฆื™ ืžืงื•ืžื™ื™ื, ื”ื—ืœ ื‘ืงื• ื ื˜ื•ื™ ืงื“ื™ืžื”, ืื‘ืœ glibc ะฒ ืœื™ื ื•ืงืก ื›ืœ ื”ื ืชื™ื‘ื™ื ื ืกืคืจื™ื ืžืกืคืจื™ื™ืช ื”ื‘ืกื™ืก, ืื•ืชื” ื ื™ืชืŸ ืœืขืงื•ืฃ ื‘ืืžืฆืขื•ืช ืžืฉืชื ื” LOCPATH. ืื—ืจื™ ื”ื”ืชืงื ื” LOCPATH=~/.local/lib/locale/ ื›ืœ ื”ืงื‘ืฆื™ื ื”ืงืฉื•ืจื™ื ืœืœื•ืงืœื™ื–ืฆื™ื” ื™ื—ืคืฉื• ืจืง ื‘ืชื™ืงื™ื™ื” ืฉืœื™. ืืจื›ื™ื•ืŸ ืฉืœ ืžืงื•ืžื•ืช ืขื ืขืจื›ืช ื”ืžืฉืชื ื™ื LOCPATH ื”ืชืขืœืžื•.

ื”ื ื” ื”ืžื‘ื—ืŸ ื”ืžื›ืจื™ืข:

$> LANG=ru_MY.UTF-8 LOCPATH=~/.local/lib/locale/ sort buhg.txt
ะะฑะฐะบะฐะฝะพะฒ ะœะธั…ะฐะธะป;ะผะฐะปัั€
ะะปะบะธะฝะฐ ะญะปะปะฐ;ะบั€ะฐะฝะพะฒั‰ะธั†ะฐ
ะ˜ะฒะฐะฝะพะฒ ะะฝะดั€ะตะน;ัะปะตัะฐั€ัŒ
ะ˜ะฒะฐะฝะพะฒะฐ ะะปะปะฐ;ะฐะดะฒะพะบะฐั‚

ื”ื™ื“ื“! ืขืฉื™ื ื• ื–ืืช!

ืขื‘ื•ื“ื” ื‘ืื’

ื›ื‘ืจ ืขื ื™ืชื™ ืขืœ ื”ืฉืืœื•ืช ืœื’ื‘ื™ ืžื™ื•ืŸ ืžื—ืจื•ื–ื•ืช ืฉื”ื•ืฆื’ื• ื‘ื”ืชื—ืœื”, ืื‘ืœ ืขื“ื™ื™ืŸ ื™ืฉ ื›ืžื” ืฉืืœื•ืช ืœื’ื‘ื™ ืฉื’ื™ืื•ืช - ื’ืœื•ื™ื•ืช ื•ื‘ืœืชื™ ื ืจืื•ืช.

ื ื—ื–ื•ืจ ืœื‘ืขื™ื” ื”ืžืงื•ืจื™ืช.

ื•ื’ื ื”ืชื•ื›ื ื™ืช sort ื•ื”ืชื•ื›ื ื™ืช ืœื”ืฆื˜ืจืฃ ื”ืฉืชืžืฉ ื‘ืื•ืชืŸ ืคื•ื ืงืฆื™ื•ืช ื”ืฉื•ื•ืืช ืžื—ืจื•ื–ื•ืช ืž glibc. ืื™ืš ื–ื” ืงืจื” ืœื”ืฆื˜ืจืฃ ื ืชืŸ ืฉื’ื™ืืช ืžื™ื•ืŸ ื‘ืฉื•ืจื•ืช ืฉืžืžื•ื™ื ื•ืช ืœืคื™ ื”ืคืงื•ื“ื” sort ื‘ืžืงื•ื en_US.UTF-8? ื”ืชืฉื•ื‘ื” ืคืฉื•ื˜ื”: sort ืžืฉื•ื•ื” ืืช ื›ืœ ื”ืžื—ืจื•ื–ืช, ื• ืœื”ืฆื˜ืจืฃ ืžืฉื•ื•ื” ืจืง ืืช ื”ืžืคืชื—, ืฉื”ื•ื ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืืช ืชื—ื™ืœืช ื”ืžื—ืจื•ื–ืช ืขื“ ืœืชื• ื”ืจื•ื•ื— ื”ืจืืฉื•ืŸ. ื‘ื“ื•ื’ืžื” ืฉืœื™, ื–ื” ื”ื‘ื™ื ืœื”ื•ื“ืขืช ืฉื’ื™ืื” ืžื›ื™ื•ื•ืŸ ืฉื”ืžื™ื•ืŸ ืฉืœ ื”ืžื™ืœื™ื ื”ืจืืฉื•ื ื•ืช ื‘ืฉื•ืจื•ืช ืœื ืชืื ืืช ื”ืžื™ื•ืŸ ืฉืœ ื”ืฉื•ืจื•ืช ื”ืฉืœืžื•ืช.

ืžืงื•ื "ื’" ืžื‘ื˜ื™ื— ืฉื’ื ื‘ืžื—ืจื•ื–ื•ืช ืžืžื•ื™ื ื•ืช ืชืช-ืžื—ืจื•ื–ื•ืช ื”ืจืืฉื•ื ื™ื•ืช ืขื“ ืœืจื•ื•ื— ื”ืจืืฉื•ืŸ ื™ืžื•ื™ื ื•, ืื‘ืœ ื–ื” ืจืง ืžืกื•ื•ื” ืืช ื”ืฉื’ื™ืื”. ืืคืฉืจ ืœื‘ื—ื•ืจ ื ืชื•ื ื™ื (ืื ืฉื™ื ืขื ืื•ืชื ืฉืžื•ืช ืžืฉืคื—ื”, ืื‘ืœ ืฉืžื•ืช ืคืจื˜ื™ื™ื ืฉื•ื ื™ื) ืฉืœืœื ื”ื•ื“ืขืช ื”ืฉื’ื™ืื” ื™ืชื ื• ืชื•ืฆืืช ืžื™ื–ื•ื’ ืงื‘ืฆื™ื ืฉื’ื•ื™ื”. ืื ื ืจืฆื” ืœื”ืฆื˜ืจืฃ ืฉื•ืจื•ืช ืงื•ื‘ืฅ ืžืžื•ื–ื’ื•ืช ืœืคื™ ืฉื ืžืœื, ืื– ื”ื“ืจืš ื”ื ื›ื•ื ื” ืชื”ื™ื” ืœืฆื™ื™ืŸ ื‘ืžืคื•ืจืฉ ืืช ืžืคืจื™ื“ ื”ืฉื“ื•ืช ื•ืœืžื™ื™ืŸ ืœืคื™ ืฉื“ื” ื”ืžืคืชื—, ื•ืœื ืœืคื™ ื›ืœ ื”ืฉื•ืจื”. ื‘ืžืงืจื” ื–ื”, ื”ืžื™ื–ื•ื’ ื™ืชืงื“ื ื›ื”ืœื›ื” ื•ืœื ื™ื”ื™ื• ืฉื’ื™ืื•ืช ื‘ืืฃ ืžืงื•ื:

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

ื“ื•ื’ืžื” ืฉื‘ื•ืฆืขื” ื‘ื”ืฆืœื—ื” ื‘ืงื™ื“ื•ื“ CP1251 ืžื›ื™ืœ ืฉื’ื™ืื” ื ื•ืกืคืช. ื”ืขื•ื‘ื“ื” ื”ื™ื ืฉื‘ื›ืœ ื”ื”ืคืฆื•ืช ื”ืžื•ื›ืจื•ืช ืœื™ ืœื™ื ื•ืงืก ื—ื‘ื™ืœื•ืช ื—ืกืจื•ืช ืžื™ืงื•ื ื”ื™ื“ื•ืจ ru_RU.CP1251. ืื ื”ืžืงื•ื ื”ืงื•ืžืคื™ืœืฆื™ื” ืœื ื ืžืฆื, ืื– sort ืžืฉืชืžืฉ ื‘ืฉืงื˜ ื‘ื”ืฉื•ื•ืื” ืฉืœ ื‘ื™ื™ื˜-byte, ื•ื–ื” ืžื” ืฉืจืื™ื ื•.

ืื’ื‘, ื™ืฉ ืขื•ื“ ืชืงืœื” ืงื˜ื ื” ืฉืงืฉื•ืจื” ืœื—ื•ืกืจ ื ื’ื™ืฉื•ืช ืฉืœ ืžืงื•ืžื•ืช ืžืงื•ืžืคืœื™ื. ืงึฐื‘ื•ึผืฆึธื” LOCPATH=/tmp locale -a ื™ื™ืชืŸ ืจืฉื™ืžื” ืฉืœ ื›ืœ ื”ืื–ื•ืจื™ื ื‘ locale-archive, ืื‘ืœ ืขื ืขืจื›ืช ื”ืžืฉืชื ื™ื LOCPATH ืขื‘ื•ืจ ื›ืœ ื”ืชื•ื›ื ื™ื•ืช (ื›ื•ืœืœ ื”ืžืจื‘ื™ืช ืื–ื•ืจ) ืื–ื•ืจื™ื ืืœื” ืœื ื™ื”ื™ื• ื–ืžื™ื ื™ื.

$> 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

ืžืกืงื ื”

ืื ืืชื” ืžืชื›ื ืช ืฉืจื’ื™ืœ ืœื—ืฉื•ื‘ ืฉืžื—ืจื•ื–ื•ืช ื”ืŸ ืงื‘ื•ืฆื” ืฉืœ ื‘ืชื™ื, ืื– ื”ื‘ื—ื™ืจื” ืฉืœืš LC_COLLATE=C.

ืื ืืชื” ื‘ืœืฉืŸ ืื• ืžื”ื“ืจ ืžื™ืœื•ื ื™ื, ืขื“ื™ืฃ ืฉืชื”ื“ืจ ื‘ืžืงื•ื ืฉืœืš.

ืื ืืชื” ืžืฉืชืžืฉ ืคืฉื•ื˜, ืื– ืืชื” ืจืง ืฆืจื™ืš ืœื”ืชืจื’ืœ ืœืขื•ื‘ื“ื” ืฉื”ืคืงื•ื“ื” ืื ื™-ื ืžืคืœื˜ ืงื‘ืฆื™ื ืฉืžืชื—ื™ืœื™ื ื‘ื ืงื•ื“ื” ืžืขื•ืจื‘ืช ื‘ืงื‘ืฆื™ื ืฉืžืชื—ื™ืœื™ื ื‘ืื•ืช, ื• ืžืคืงื“ ื—ืฆื•ืช, ืฉืžืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื•ืช ื”ืคื ื™ืžื™ื•ืช ืฉืœื• ื›ื“ื™ ืœืžื™ื™ืŸ ืฉืžื•ืช, ืฉื ืงื‘ืฆื™ื ืฉืžืชื—ื™ืœื™ื ื‘ื ืงื•ื“ื” ื‘ืชื—ื™ืœืช ื”ืจืฉื™ืžื”.

ืชื–ื›ื•ืจ

ื“ื•ื— ืžืก' 10 ืืœื’ื•ืจื™ืชื ืื™ืกื•ืฃ Unicode

ืžืฉืงืœื™ ืชื•ื•ื™ื ื‘-unicode.org

ื”ืžื—ืœืงื” ืœื˜ื™ืคื•ืœ ื ืžืจืฅ - ื”ื˜ืžืขืช ืกืคืจื™ื” ืœืขื‘ื•ื“ื” ืขื Unicode ืž-IBM.

ืžื‘ื—ืŸ ืžื™ื•ืŸ ื‘ืืžืฆืขื•ืช ื”ืžื—ืœืงื” ืœื˜ื™ืคื•ืœ ื ืžืจืฅ

ื”ื“ืžื•ืช ืฉื•ืงืœืœืช ืคื ื™ืžื” ISO 14651

ืชื™ืื•ืจ ืคื•ืจืžื˜ ื”ืงื•ื‘ืฅ ืขื ืกื•ืœืžื•ืช ISO 14652

ื“ื™ื•ืŸ ืขืœ ื”ืฉื•ื•ืืช ืžื—ืจื•ื–ื•ืช ื‘ glibc

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”