áááá«ááºáž
áááºážááẠááááºá á¬á¡áá»ááºá¡áááºááᯠáá±á«ááºážá ááºááẠááá¯áá±á¬ááºážáá±á¬ áá¬ááºááœáŸááºážááŒáá·áº á áááºáá²á·áááºá e-mail, HR áá¬ááá±áá¬áá±á·á áºááŸáááŸááá±á¬ áááºáááºážáá¬áá°ážáá»á¬ážááŒáá·áº á á¬ááá¯á·á á¬áááºážá¡áá¯á¶ážááŒá¯áá°áá»á¬ážá á¬áááºážááŸáááŸááá±á¬áááºáááºážáá»á¬ážá á á¬áááºážááŸá áºáá¯áá¯á¶ážááᯠáá°áá®áá¯ááºá á¬áá¬ážááá¯ááºáá»á¬ážááá¯á· áááºááá¯á·áá²á·áááºá UTF-8 Unix á á¬ááŒá±á¬ááºážá¡áá¯á¶ážáá»á¬ážááŒáá·áº ááááºážáááºážáá¬ážáááºá
á¡ááŒá±á¬ááºážá¡áᬠmail.txt
ÐваМПв ÐМЎÑей;[email protected]
á¡ááŒá±á¬ááºážá¡áᬠbuhg.txt
ÐваМПва Ðлла;ЌалÑÑ
ÐлкОМа Ðлла;кÑаМПвÑОÑа
ÐваМПв ÐМЎÑей;ÑлеÑаÑÑ
ÐбакаМПв ÐОÑ
аОл;ЌалÑÑ
áá±á«ááºážá ááºážáááºá ááá¯ááºáá»á¬ážááᯠUnix á¡áááá·áºááŒáá·áº á á®áá¬ážáááºá ááŒáá¹áᬠUnix áááá¯ááááºá ááá·áºááœááºážááŸá¯ááᯠáááºááœááºážáá²á·áááºá áá°ážáá±á«ááºážá¡ááŸá¬ážáá áºáá¯ááŒá±á¬áá·áº ááá»áŸá±á¬áºááá·áºáá² áá»ááŸá¯á¶ážáá²á·áá±á¬á
$> 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
ÐбакаМПв ÐОÑ
аОл;ЌалÑÑ
ÐлкОМа Ðлла;кÑаМПвÑОÑа
ÐваМПва Ðлла;ЌалÑÑ
ÐваМПв ÐМЎÑей;ÑлеÑаÑÑ
áá°áá®áá¯ááºááœáẠá¡áá»áá¯ážá¡á á¬ážááœá²ááŒááºážááá¯ááºáᬠááœá²áá»á±á¬áºááŸá¯áá áºáᯠááá¯á·ááá¯áẠá¡áá»áá¯ážá¡á á¬ážááœá²ááŒááºážááá¯ááºáᬠá¡ááºáááá¯áá®áááºááœáẠá¡áá»áá¯ážááá®ážáá«áá áááºááŸá¬ážááŸá¯áá áºáá¯ááŸáá·áº áá°áááºá áááá¡áá»ááºá ááá¯ááŒá áºááá¯ááºáá»á±ááŸááá¬áá±á«á·á
áá±á¬áá±á¬ááẠáá±ážáááºáá¬ážááá¯ááºáá¡á±á¬áẠáá°ážáá±á«ááºáž á¡á¬áá¯á¶á áá¯ááºáá«á ááŒáá¹áá¬. áááá¹áá¶áááºážáá» ááá¯ážáá±á¬ááºáá¯á¶ážááŒá®áž ááŒá¿áá¬ááᯠááŒá±ááŸááºážááŒáá·áºáá¡á±á¬ááºá á¡áááºáá¯á¶áž locale ááá±ááŒá±á¬ááºážááŒáá·áºáá¡á±á¬áẠU.S.ááœáẠá¡áá±á«áº ru_RU. á¡áá»áá¯ážá¡á á¬ážááœá²áááºá áááºáááºážáá»ááºááᯠááŒá±á¬ááºážáá²áááºááŸááºááẠáá¯á¶áá±á¬ááºáá±áááá·áºáááºá LC_COLLATEááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·ááẠá¡áá±ážá¡ááœáŸá¬ážááá á¹á áá»á¬ážá¡ááœáẠá¡áá»áááºááŒá¯ááºážáááºááá¯ááºáá«á
$> LANG=ru_RU.UTF-8 sort buhg.txt
ÐбакаМПв ÐОÑ
аОл;ЌалÑÑ
ÐлкОМа Ðлла;кÑаМПвÑОÑа
ÐваМПва Ðлла;ЌалÑÑ
ÐваМПв ÐМЎÑей;ÑлеÑаÑÑ
áá¬ááŸáááŒá±á¬ááºážáá²áá°ážá
ááá¯ááºáá»á¬ážááᯠsingle-byte encoding á¡ááŒá áºááá¯á· ááŒááºáááºáá¯ááºáá¯ááºááŒáá«á áá¯á·á
$> iconv -f UTF-8 -t KOI8-R buhg.txt
| LANG=ru_RU.KOI8-R sort
| iconv -f KOI8-R -t UTF8
áá¬ááŸáááŒá±á¬ááºážáá²ááœá¬ážááŒááºáá°ážá
áááºážáá¬ááŸáá¯ááºááá¯á·áááá°ážá áááºážá¡ááºáá¬áááºááŸá¬ááŒá±ááŸááºážáá»ááºááŸá¬ááááá·áºáááºá áá¯ááŸá¬ážáá»áá¯ážááá¯ážá¡áááºáá»á¬ážá¡ááŒá±á¬ááºáž ááá¯ááºááá¯ááºááá±á¬áºááŒáá¬ážáá±á¬áºáááºáž á¡ááŒá¬ážá¡áá»áá¯ážá¡á
á¬ážááœá²ááŒááºážááá¯ááºáᬠáá±ážááœááºážáá»á¬ážááŸááá«áááºá á¥ááá¬á á€ááœáẠááŒá¿áá¬áá
áºáá¯ááŸááááº-
á¡ááŒá±ááẠáá±áá¬ááá¯ááºážááœáẠá á¶ááŸá¯ááºážááŒá áºáááº- programmer locale ááá¯áá¯á¶ážáá«á "ááᯠC" áááºááẠáá»á±á¬áºááœáŸááºáááá·áºáááºá ááŒáá¯ážá á¬ážááŒááºá·áá¡á±á¬ááº:
$> LANG=C sort buhg.txt
ÐлкОМа Ðлла;кÑаМПвÑОÑа
ÐбакаМПв ÐОÑ
аОл;ЌалÑÑ
ÐваМПв ÐМЎÑей;ÑлеÑаÑÑ
ÐваМПва Ðлла;аЎвПкаÑ
áá áºáá¯áá¯áá±á¬á· ááŒá±á¬ááºážááœá¬ážááŒá®á Yolkina áá áºáá±áá¬áá¬ááŸá¬ áá»á±á¬áºááœá¬ážáá±ááá·áº Ivanovs ááœá±áᬠááŸááºáááºáá²á· á á®áááºážááŒá®áž áááºážá á®áá±áá«áááºá áá°áááºážááŒá¿áá¬ááᯠááŒááºááŒáá·áºáá¡á±á¬ááºá
$> LANG=C sort buhg.txt > buhg.srt
$> LANG=C sort mail.txt > mail.srt
$> LANG=C join buhg.srt mail.srt > result
á¡ááºáá¬áááºááááá±ážáá¬ážááá·áºá¡ááá¯ááºáž á¡ááŸá¬ážá¡ááœááºážáááŸáá¡áá¯ááºáá¯ááºáááºá á€ááẠYolkina áááá á¬ááŒá±á¬ááºážáááŸááá±áá±á¬áºáááºážá
ááŒá¿áá¬ááᯠááŒá±ááŸááºážááá¯ááºáá¯á¶ááááºá ááá¯á·áá±á¬áº á¡ááŒá±á¡áá±ááœááºá á¡ááŒá¬ážáá±á¬ áá¯ááŸá¬ážáá¯ááºááŒá±á¬ááºážááŒááºáž - Windows ááᯠá ááºážááŒáá·áºááŒáá«á áá¯á· CP1251:
$> iconv -f UTF-8 -t CP1251 buhg.txt
| LANG=ru_RU.CP1251 sort
| iconv -f CP1251 -t UTF8
á á®ááŒááºážááááºááẠáá°ážáááºážáá±á¬ááºá¡á±á¬ááºááẠáá±áá¬áá±áááŸáá·áº ááá¯ááºááá¯ááºáá±áááºááŒá áºáááºá "ááᯠC"ááŸáá·áºá¡áá®á á¥ááá¬áá áºáá¯áá¯á¶ážááẠá¡ááŸá¬ážá¡ááœááºážáááŸááá² áá¯ááºáá±á¬ááºáááºá áááá¹áá¬áá áºáá»áá¯ážáá»áá¯ážá
áá»á¬ážáá±á¬á¡á¬ážááŒáá·áº á¡ááŸá¬ážááœá±ááᯠáá¯á¶ážááœááºáá¬ážááá¯á· áááá¯ááááºáá±ážááœá²áá¬ááŸá¬ áááá¹áá¬ááá¬ááᯠáááŒáá¯ááºáá°ážá áááºááá¯á¡áá¯ááºáá¯ááºáááºááá¯áá¬ááᯠáá±ážáá±ážáááºááẠáá±á·áá¬ááŒáá·áºááá¯á· ááá¯áá«áááá·áºáááºá ááŒáá¹áᬠá¡áááºá¡áá¬ááá¯á¡áá»áá¯ážáááºáá±á¬ááºááááºážá LC_COLLATE .
á¡áá¯á¶ážááŸá¬áá±á¬á· áá±ážááœááºážááœá±ááᯠááŒá±ááá¯á· ááŒáá¯ážá á¬ážáá«á·áááºá
- á¡áá»áá¯ážááá®ážáá»áá¯ážááá¯ážá¡áááºáá»á¬ážááᯠá¡áááºááŒá±á¬áá·áº ááŸá¬ážááœááºážá áœá¬á á®áá¬ážááááºážá
- áá¬ááœá±á¬áá»á· LANG=ru_RU.CP1251 áá®áá»áŸááŒááºážááŒá áºáá¬áááºá LANG=C
- áá¬ááŒá±á¬áá·áºáá¯ááºáá¬áá²á ááŒáá¹áᬠО áá°ážáá±á«ááºáž á á®áá¬ážáá±á¬á á¬ááŒá±á¬ááºážáá»á¬ážá á¡á á®á¡á á¥áºááŸáá·áºáááºáááºááá·áº ááá°áá®áá±á¬ á¡áá°á¡ááá»á¬áž
- áá»áœááºá¯ááºáááá°áá¬áá»á¬ážá¡á¬ážáá¯á¶ážááœáẠá¡áááºááŒá±á¬áá·áº á¡ááŸá¬ážáá»á¬ážááŸááá±ááááºážá
- áá±á¬ááºáá¯á¶ážáá±á¬á· áááºážá áááºááŒáá¯áẠááŒáá¯ážááœá±ááᯠáááºááá¯ááœá²ááá²á
áá°áá®áá¯ááºááŒáá·áº á á®ááŒááºáž
ááááá¯á¶áž áááºáá¬ážáááá·áº Technical Report áá¶áá«áẠ10 ááᯠáá¶á
á¬ážááœáá·áºááŸááá«áááºá
á á¯á ááºážá á®á áẠâ âááŸáá¯ááºážááŸááºâ ááŒáá¯ážáá»á¬ážááẠá á®ááŒááºážááá¯ááºáᬠá¡ááºáááá¯áá®áááºá á¡ááŒá±áá¶ááŒá áºáááºá á¡ááºáááá¯áá®áááºáá»á¬ážááẠáááºážááá¯á·ááá¯ááºááá¯áẠááœá²ááŒá¬ážááá¯ááºááẠ("áá°áá±á¬ááºáž", "áá±á«ááºážá ááºážááŒááºáž", "ááŒááº")á ááá¯á·áá±á¬áº áááºážááá¯á·áá±á«áºáá¬ááá·áºá¡á á®á¡á á¥áºááᯠáá¯á¶ážááŒááºááẠáááºážááá¯á·á¡á¬ážáá¯á¶ážááẠááŒáá¯ážáá áºá á¯á¶á ááŸáá¯ááºážááŸááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯áááºááŒá áºáááºá
ááá¬ááá¬áá¬á áá¬ážááŒáá·áº ááŒáá¯ážáá»á¬ážááᯠá á®ááŒááºážááẠá¡áá±á¬áºáá±áž ááŸá¯ááºááœá±ážáá±á¬ ááŒá¿áá¬ááŒá áºáááºá á¡ááá¯ážááŸááºážáá¯á¶áž single-byte encodings áá»á¬ážááœááºáááºá á¡ááºá¹áááááºáááºáááºá¡áá¹ááá¬ááŸáá·áº áá áºáááºážáá áºáá¯á¶ááœá²ááŒá¬ážááá·áºá¡áá¹ááá¬áá»á¬ážááœááºááẠá¡áá¹ááá¬áá»á¬ážáá¡á á®á¡á á¥áºááẠá¡ááºá¹áááááºáááºáááºá¡áá¹ááá¬áá»á¬ážááŸáá·áºááá°áá² á€á á¬áá¯á¶ážáá»á¬ážááᯠáá¯ááºáá¯ááºáá¬ážáá±á¬ ááááºážáááºááá¯ážáá»á¬ážáá¡á á®á¡á á¥áºááŸáá·áº áááºáá°áááºááá¯ááºáá±á¬á·áá«á áá«ááŒá±á¬áá·áº áá»á¬áááºá¡áá¹ááá¬áá²á· á¡áá¹ááá¬áá«á à ááŒá¬ážááœááºáááºáá±áá«áááºá РО PááŸáá·áº encoding ááœáẠCP850 áá°áááŒá¬ážááá¬áááºá ÿ О Ã.
áááºááẠáá°áá®áá¯ááºááœáẠáá¯ááºáá±á¬ááºááá·áºá¡ááá¯ááºáž á¡áá»áá¯á·áá±á¬ á¡á á®á¡á á¥áºá¡ááá¯ááºáž á á®á ááºáá¬ážááá·áº "á á¶ááŒ" á á¬áá¯á¶ážáá»á¬ážááᯠá¡ááá¡áá» áá¯ááºááŒá±á¬ááºážááŒááºážá០á ááá¹ááááŒá áºá¡á±á¬áẠááŒáá¯ážá á¬ážááá¯ááºáááºá áá¯ááºáá»á¬áž UTF8, UTF16 ááá¯á·ááá¯áẠone-byte KOI8-R (áá°áá®áá¯ááºá ááá·áºáááºááœá²ááœá²áá áºáᯠááá¯á¡ááºáá«á) á á¬áá¯á¶ážáá»á¬ážá ááááºážáá»á¬ážááᯠááá¯ááºá á¬ážááŒá¯ááá¯ááºáá±á¬áºáááºáž á¡ááŒá±áá¶ááá¬ážá áá°áá®áá±á¬á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠááá¯ážáá¬ážáá«á
áá»áœááºá¯ááºááá¯á·ááẠáááºá¹áá±áááá¬ážáá áºáá¯ááᯠá¡á ááŸáááºáá±á¬ááºáá»áŸááºáááºá áá»áœááºá¯ááºááá¯á·ááẠáááºážá¡ááœáẠuniversal symbol order ááᯠáááºááŸááºáá±ážááá¯ááºáááºááá¯ááºáá«á áá°áá®áá±á¬á¡áá¹ááá¬áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯áá±á¬ ááá°áá®áá±á¬ááá¯ááºáá¶á¡áá¹ááá¬áá»á¬ážááœááºá á€á á¬áá¯á¶ážáá»á¬ážáá¡á á®á¡á á¥áºááœá²ááŒá¬ážááá¯ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá ááŒááºáá áºááᯠà ááŒáá¯ážá¡ááŒá ẠáááºááŸááºááŒá®áž ááŒáá¯ážáá áºáá»á±á¬ááºážá¡ááŒá Ạá á®áá¬ážáááºá AE. áá±á¬áºáá±áá¬áᬠà ááŒá®ážáá±á¬ááºááœááºáááºááŸááá±á¬áá®ážááŒá¬ážá á¬áá áºá á±á¬ááºááŒá áºáááá·áºáááºá Z. á áá¬ážáá ááº, á¡ ligatures áá²á·ááá¯á· à áááºá¹áá±ááá±á«ááºážáá»á¬ážá áœá¬áá²á· áá±ážáá¬ážáá²á· á á¬ááœá±ááŸááááºá ááá¯á·ááŒá±á¬áá·áº áá»ááºá¡áá¹ááá¬ááœáẠá¡áá¹ááá¬áá áºáá¯ááŸááááºá ChááŒá¬ážáá²ááŸá¬ áááºáááºáá±áááºá H О I.
á¡áá¹ááá¬áá»á¬ážááœáẠááœá²ááŒá¬ážááŸá¯áá»á¬ážá¡ááŒáẠá¡áá»áá¯ážá¡á á¬ážááœá²ááŒááºážá¡áá±á«áº ááœáŸááºážááá¯ážááá·áº á¡ááŒá¬ážáá±á¬ á¡áá»áá¯ážáá¬ážááá¯ážáá¬ááá±á·áá»á¬ážáááºáž ááŸááá±ážáááºá á¡áá°ážáááŒáá·áºá áá±ážá áá¬ááŸááá¬áááº- á á¬áá¯á¶ážááŒá®ážááŸáá·áº á á¬áá¯á¶ážáá±ážáá»á¬ážáá«áá±á¬ á áá¬ážáá¯á¶ážáá»á¬ážááẠá¡áááá¬ááºááœáẠáááºááá·áºá¡á á®á¡á á¥áºááœáẠáá±á«áºáá¬ááá·áºááááºážá áá¯ááºááŒááºá¡ááŸááºá¡áá¬ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒá±á¬áá·áº á á®ááŒááºážááá¯áááºáž ááááá¯ááºááá¯ááºáááºá á ááááºáá¬áá¬ááœááºá áá±ážááœááºážáá±ážáá±á¬áá«áá»áá áºáá¯áá¡á ááœáẠááŒá±á¬ááºážááŒááºáá±ážááœááºážá¡ááŸááºá¡áá¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠ(áá®áá»ááºážááŒáá¯ááºáá¬ážá) á€ááá á¹á ááœááºá á á áºáá±ážáá±ážááŒááºážáá±á¬á á¬ááŒá±á¬ááºážáá»á¬ážááᯠá¡áá¹ááá¬á¡ááŒááºáááºááœáẠáá®ážááŒá¬ážá¡á á¯á¡áá±ážáá áºáá¯á¡ááŒá Ạáá á¯á ááºážááá·áºáá±á¬áºáááºáž á¡ááŒá¬ážáááºáá¯á¶á¡ááŸááºá¡áá¬ážáá»á¬ážááŒáá·áº áá»ááºážááŒá±á¬ááºážáá»á¬ážááᯠáááºááá¯á·á á®áááºáááºážá
á¥áá±á¬ááá¬áá¬á
áá¬ážáá»á¬ážááŸáá·áº á¡ááœááºááŒá¬ážáá¬ážáá±á¬ áá¬áá¬á
áá¬ážáá»á¬ážááŒáá·áº á
á®ááœá²ááŒááºážááœáẠáá»áœááºá¯ááºáá±áááºááá¯ááºáá«á áá¬ááŸáááºááá¯á· ááá¯á·ááá¯áẠá¡áá±á«áºááŸá¡á±á¬ááºááŒá±á
á¬áá±ážáááºážááŒáá·áº áá¬áá¬á
áá¬ážáá»á¬ážááœáẠáá»ááºážááŒá±á¬ááºážáá»á¬ážá០á¡áá¹ááá¬áá»á¬ážááᯠáááºáááºá¡á
á®á¡á
á¥áºááŒáá·áº ááááºážáááºážáá¬ážááá¯ááºááŒá±áá»á¬ážááŒá±á¬ááºáž áááááŒá¯áá«áááºááŸáá·áº á¡áá¹ááá¬ááá¯ááºáá±á¬ á¡áá±ážá¡áá¬ážá
áá
áºáá»á¬ážááœááºááẠá¡áá¹ááá¬á¡ááá¯áẠáá»ááºážááŒá±á¬ááºážá
á®ááẠááá¯ááºááá¯ááºáááºážáááºážáá»á¬áž ááŸááááºááᯠáááááŒá¯áá«á . á¥ááá¬á¡á¬ážááŒáá·áºá hieroglyphs áá»á¬ážááᯠá
ááá¯ááºááºááŒáá·áº á¡áááá·áºáá±ážááá¯ááºááẠ(
á¡áááºáá±á¬áºááŒáá« á¡ááºá¹áá«áááºáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á áá°áá®áá¯ááºááá¬ážáá»á¬ážááᯠá¡ááŒá±áá¶áá¬ážáá±á¬ á á¬ááŒá±á¬ááºážáá»á¬áž ááŸáá¯ááºážááŸááºááŒááºážá¡ááœáẠá¡ááŒá±áá¶ááá¯á¡ááºáá»ááºáá»á¬ážááᯠáá¯á¶áá±á¬áºáá¬ážáá«áááºá
- á á¬ááŒá±á¬ááºážáá»á¬ážááᯠááŸáá¯ááºážááŸááºááŒááºážááẠáá¯ááºááá¬ážááŸá á¡áá¹ááá¬áá»á¬ážá á¡áá±á¡áá¬ážáá±á«áºááœááºáá°áááºáááºááá¯ááºáá«á
- á¡áá¹ááá¬áá áºáá¯á¶ážáááºážááŒáá·áºááœá²á·á ááºážáá¬ážáá±á¬ áá¬ááºáá±á¬ááºáá»á¬ážá sequences áá»á¬ážááᯠcanonical form ááá¯á· áá»áŸá±á¬á·áá»ááẠ(A + ááááºá ááºááá¯ááºážááẠáá°áááºá à );
- strings áá»á¬ážááᯠááŸáá¯ááºážááŸááºáá±á¬á¡áá«á á á¬áá¯á¶ážááᯠstring á context ááœáẠááá·áºááœááºážá ááºážá á¬ážááŒá®áž ááá¯á¡ááºáá«á áááºážáá¡áááºáá®ážáá¬ážáá»ááºážáá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºááŒááºážá áá°áá áºáá áºáá¯á¡ááŒá Ạáá±á«ááºážá ááºáá¬ážááẠ(Ch Czech ááœááº) ááá¯á·ááá¯áẠ(á¡áá»á¬ážá¡ááŒá¬áž) ááœá²ááŒá¬ážáá¬ážáááºáà ááŒááºáá áºááá¯);
- á¡áá»áá¯ážáá¬ážá¡ááºá¹áá«áááºáá»á¬áž (á¡áá¹ááá¬á á á¬áá¯á¶ážááŒá®áž/á¡áá±ážá áááºáá¯á¶á áá±ážáááºážá¡á á®á¡á á¥áº) ááᯠá¡áááá·áºááááºá áœá²áá¬áááºáá±ážááŸá¯á¡áá (á¡á®ááá¯áá»á®)á
- ááŸáá¯ááºážááŸááºááŸá¯ááẠá á®ááẠá¡ááœááºáá¬áá á¡ááŒá¬ážáá±áá¬áá»á¬ážá áœá¬ááœááºáá« á¡áá±ážááŒá®ážáá«áááºá á¥ááᬠá¡áááºážá¡ááá¯ááºážá¡ááŒá¬ážááᯠáááºááŸááºááŒááºážá¡ááœáẠ({A... z} ááᯠá¡á á¬ážááá¯ážááŒááºáž áá¬áž Bash);
- ááŸáá¯ááºážááŸááºááŸá¯ááᯠáá»ááºááŒááºá áœá¬ áá¯ááºáá±á¬ááºááá·áºáááºá
ááá¯á·á¡ááŒááºá á¡á á®áááºáá¶á á¬áá á¬áá±ážááá¬áá»á¬ážááẠalgorithm developer áá»á¬ážá¡áá±á«áº á¡á¬ážáááá¯ážááá·áºáá±á¬ ááŸáá¯ááºážááŸááºáá¯ááºááá¹áááá»á¬ážááᯠáá±ážááœá²áá²á·áááº-
- ááŸáá¯ááºážááŸááºááŸá¯ á¡ááºáááá¯áá®áááºááẠáá¬áá¬á áá¬ážáá áºáá¯á á®á¡ááœáẠáá®ážááŒá¬ážá¡áá¹ááá¬áá»á¬áž áááá¯á¡ááºáá« (áá¯ááŸá¬ážááŸáá·áº áá°áááááºážáá¬áá¬á áá¬ážáá»á¬ážááẠCyrillic á¡áá¹ááá¬á¡áá»á¬ážá á¯ááᯠáá»áŸáá±ááŒáááº)á
- ááŸáá¯ááºážááŸá¥áºááŸá¯ááẠáá°áá®áá¯ááºááá¬ážáá»á¬ážááŸá á á¬áá¯á¶ážá¡á á®á¡á á¥áºá¡áá±á«áº á¡á¬ážáááá¯ážááá·áºáá«á
- ááá°áá®áá±á¬ áááºáá»á±ážááŸá¯ááá¯ááºáᬠá¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááœáẠáá°áá®áá±á¬ááŒáá¯ážáá áºáá»á±á¬ááºážááẠááá°áá®áá±á¬á¡áá±ážáá»áááºááŸáááá¯ááºáá±á¬ááŒá±á¬áá·áº string weight ááẠstring á attribute áá áºáá¯áááŒá áºááá·áºáá«á
- áá±á«ááºážá ááºážááŒááºáž ááá¯á·ááá¯áẠááá¯ááºážááŒá¬ážááá·áºá¡áá« á¡áááºážá¡áá±ážáá»á¬ážááẠááŒá±á¬ááºážáá²ááá¯ááºáááºá x < y á¡á²áá«ááᯠáááá¯ááºáá¬áá°ážá xz < yz);
- áá°áá®áá±á¬á¡áá±ážáá»á¬ážáá«ááŸááá±á¬ ááá°áá®áá±á¬ááŒáá¯ážáá»á¬ážááᯠá¡áá»áá¯ážá¡á á¬ážááœá²ááŒááºážááá¯ááºáᬠá¡ááºáááá¯áá®áááºáááŸá¯áá±á¬áá·áºá០áá°áá®áááºáᯠáá°ááá«áááºá ááá¯áá²á·ááá¯á·áá±á¬ ááŒáá¯ážáá»á¬ážááᯠáááºáá±á¬ááºážááŸá¬áá°ááŒááºážááᯠááááºáááºááŒááºážááẠááŒá áºááá¯ááºáá±á¬áºáááºáž áááºážááẠá áœááºážáá±á¬ááºáááºááᯠáá»áááºážá á±ááá¯ááºáááºá
- áááºáá«ááá²áá² á á®á á¥áºá ááºá¡ááœááºáž áá°áá®áá±á¬á¡áá±ážáá»áááºááŸááá±á¬ á¡áááºážáá»á¬ážááᯠáá²ááŸááºááá¯ááºáá«áááºá ááá¯ááºáá¶á·ááŸá¯ááẠáá®ážááŒá¬ážááœá²áá¯ááºááá·áº á¡ááºáááá¯áá®áááºáá áºáá¯á ááá¯ááºááá¯ááºááŸá¯áá áºáá¯ááŒá áºááŒá®áž string comparison algorithm áááá¯ááºááá¯ááºááŸá¯ááá¯ááºáá« (ááááºá á¬ááá¯ááºááá¯ááŒáá·áºáá«)á
- áááºáá»á±ážááŸá¯ááá±á·áá¯á¶ážáááºážáá»á¬ážááᯠááŒá¯ááŒááº/ááŒá±á¬ááºážáá²ááŒááºážááŒá±á¬áá·áº á ááºážá áá áºáá»ááŒááºáž á ááºážáá»ááºážáá»á¬ážááẠá¡áá»áááºááŸáá·áºá¡áá»áŸ ááŒá±á¬ááºážáá²ááá¯ááºáááºá
ááŸáá¯ááºážááŸááºááŸá¯ algorithm ááẠstrings áá»á¬ážáá¯ááºáá±á¬ááºáá±ááá·áº semantics á¡ááŒá±á¬ááºáž áá¬ááŸáááááŒá±á¬ááºážáááºáž áááºááŸááºáá±á¬áºááŒáá¬ážáááºá ááá¯á·ááŒá±á¬áá·áº ááááºážáá»á¬ážáá¬áá«ááŸááá±á¬ á á¬ááŒá±á¬ááºážáá»á¬ážááᯠááááºážáá»á¬ážá¡ááŒá ẠááŸáá¯ááºážááŸááºááŒááºážáááŒá¯ááá·áºáá²á áá±á¬ááºážáá«ážááᯠá¡ááºá¹áááááºá¡áááºáá»á¬ážá á¬áááºážááœáẠ(Beatles, The).
áááºááŸááºáá¬ážáá±á¬ ááá¯á¡ááºáá»ááºá¡á¬ážáá¯á¶ážááᯠááŒáá·áºáááºážáááºá¡ááœáẠMulti-level (á¡ááŸááºáááẠáá±ážá¡ááá·áº) ááá¬áž á á®ááŒááºáž algorithm ááᯠá¡ááá¯ááŒá¯áá¬ážáááºá
ááááºáá á á¬ááŒá±á¬ááºážááŸá á¡áá¹ááá¬áá»á¬ážááᯠcanonical áá¯á¶á á¶ááá¯á· áá»áŸá±á¬á·áá»ááŒá®áž ááŸáá¯ááºážááŸááºáá°áá áºáá»á¬ážá¡ááŒá Ạá¡á¯ááºá á¯ááœá²á·áá¬ážáááºá ááŸáá¯ááºážááŸááºááŸá¯áá°áá áºáá áºáá¯á á®ááᯠááŸáá¯ááºážááŸááºááŸá¯á¡ááá·áºáá»á¬ážá áœá¬ááŸáá·áº áááºááá¯ááºáá±á¬ á¡áá±ážáá»áááºáá»á¬ážá áœá¬ááᯠáááºááŸááºáá±ážáá¬ážáááºá ááŸáá¯ááºážááŸááºáá°áá áºáá»á¬ážá á¡áá±ážáá»áááºáá»á¬ážááẠá¡áááºážá¡áá»á¬áž ááá¯á·ááá¯áẠááŸáá¯ááºážááŸááºááá¯ááºáá±á¬ á¡ááœá²áá»á¬áž (á€ááá á¹á ááœááºá ááááºážááŒáá·áº) áá»á¬ážááŒá áºáááºá á¡áá°ážá¡áááá¹áá¬áẠáá»á áºáá»á°ááŸá¯áá¬ážáááºá (0x0) ááá¯áááºááŸá¬ áááºááá¯ááºáᬠááŸáá¯ááºážááŸááºááŸá¯á¡ááá·áºááœáẠá€áá°áá áºááẠááŸáá¯ááºážááŸááºááŸá¯ááœáẠááá«áááºááŒá±á¬ááºáž ááá¯ááá¯áááºá áááºááá¯ááºáᬠá¡ááá·áºáá»á¬ážá á¡áá±ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááŒáá¯ážáá»á¬ážá ááŸáá¯ááºážááŸááºááŸá¯ááᯠá¡ááŒáááºáá±á«ááºážáá»á¬ážá áœá¬ áááºáá¯ááºááá¯ááºáááºá á¡ááá·áºáá áºáá¯á á®ááœááºá á¡áááºážááŸá áºáá¯á ááŸáá¯ááºážááŸááºááŸá¯áá°áá áºáá»á¬ážá á¡áá±ážáá»áááºáá»á¬ážááᯠáá áºáá¯ááŸáá·áºáá áºáᯠáááºááá¯áẠááŸáá¯ááºážááŸááºáá«áááºá
ááá°áá®áá±á¬á¡áá»áá¯ážáá¬ážááá¯ážáá¬ááá±á·áá»á¬ážá¡ááœáẠalgorithm ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ááœáẠááá°áá®áá±á¬ coefficients áááºááá¯ážáá»á¬áž ááœá²ááŒá¬ážááá¯ááºáá±á¬áºáááºáž áá°áá®áá¯ááºá á¶ááŸá¯ááºážááœáẠá¡ááŒá±áá¶á¡áá±ážáá»á¬ážáá«ááŸááááº- "áá°áááºáž áá°áá®áá¯áẠáá±á«ááºážá áẠá¡á áááºá¡ááá¯ááºáž ááá¬áž" (DUCET) ááááºážááŸááºááᯠáááºáááºááŒá±á¬ááºáž áááááŒá¯á á±ááá¯áá«áááºá LC_COLLATE á¡ááŸááºááŸá¬ string comparison function ááœáẠweight table á ááœá±ážáá»ááºááŸá¯ááᯠáá±á¬áºááŒááŒááºáž ááŒá áºáááºá
á¡áá±ážáá»áááºááááºážáá»á¬áž DUCET á¡á±á¬ááºáá«á¡ááá¯ááºážá á®á ááºáá¬ážáááºá
- áááá¡ááá·áºááœáẠá á¬áá¯á¶ážá¡á¬ážáá¯á¶ážááᯠáá°áá®áá±á¬á¡ááŒá±á¡áá±ááá¯á· áá»áŸá±á¬á·áá»ááá¯ááºáááºá ááá¯ááºáá¬áá áºáá»á¬ážááᯠááœáŸáá·áºáá áºáááºá áá¯ááºááŒááºá¡ááŸááºá¡áá¬áž (á¡á¬ážáá¯á¶ážááá¯ááº) ááᯠáá»á áºáá»á°ááŸá¯áá¬ážáááºá
- áá¯áááá¡ááá·áºááœááºá ááá¯ááºáá¬áá áºáá»á¬ážááá¯áᬠááá·áºááœááºážá ááºážá á¬ážáááºá
- ááááá¡ááá·áºááœááºá ááá á¹á áá áºáá¯áááºážááá¯áᬠááá·áºááœááºážá ááºážá á¬ážáááºá
- á áá¯áá¹áá¡ááá·áºááœáẠáááºáá¯á¶á¡ááŸááºáá»á¬ážááá¯áᬠááá·áºááœááºážá ááºážá á¬ážáááºá
ááŸáá¯ááºážááŸááºááŸá¯ááẠááŒááºáááºážááŸá¯áá»á¬ážá áœá¬ááœáẠáá±áá¬áá°áááº- áááá áááá¡ááá·áºá coefficients áá»á¬ážááᯠááŸáá¯ááºážááŸááºáá«áááºá á¡áá±ážáá»á¬áž ááá¯ááºááá¯ááºáá«áá áá¯áááá¡ááá·áº á¡áá±ážáá»á¬ážááŸáá·áº áááºáá«ááá²áá² ááŸáá¯ááºážááŸááºááŒááºážááᯠáá±á¬ááºááœááºáá«áááºá áááááá áºáá¯ááŸáá·áº á áá¯áá¹ááá áºáᯠááŒá áºááá¯ááºáááºá
á¡áááºážáá»á¬ážááœáẠááá°áá®áá±á¬á¡áá±ážáá»áááºáá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºááŒááºážá áá°áá®áá±á¬áá°áá áºáá»á¬ážáá«ááŸááá±á¬á¡áá« ááŸáá¯ááºážááŸááºááŸá¯ááŒá®ážáá¯á¶ážáááºá á¡ááá·áºáá±ážááá·áºá áá¯á¶ážááœáẠáá°áá®áá±á¬á¡áá±ážáá»á¬ážááŸáááá·áº á¡áááºážáá»á¬ážááᯠáá áºáá¯ááŸáá·áºáá áºáᯠáá®áááºáᯠáááºááŸááºáááºá
á€á¡ááºáááá¯áá®ááẠ(áá±á¬ááºáááºáááºážááá¬ááá¯ááºáá¬á¡áá±ážá áááºá¡áá»ááºáá»á¬ážááŸáá·áºá¡áá°) ááẠáá¶áá«áẠ10 ááᯠá¡á á®áááºáá¶ááẠá¡áááºáá±ážáá²á·áááºá "áá°áá®áá¯áẠáá±á«ááºážá ááºááŸá¯ á¡ááºááá¯áá®áááº" (ACU).
á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·áááá°áá¬á០á á®ááŒááºážá¡áá°á¡áá¬ááẠá¡áááºážááẠááá¯ááá¯ááŸááºážáááºážáá¬áááºá áá°áá®áá¯ááºá á¶ááŸá¯ááºážáá²á· ááŸáá¯ááºážááŸááºááŒáá·áºááẠáá±á¬ááºážáááºá
á
ááºážáááºá¡áá±á¬ááºá¡áááºáá±á¬áºááẠACU á¡áá°ážáá
áºáá¯ááŸááá«áááºá
á¡áááºážáá»á¬ážá¡ááá¯áẠááŸááºáááºá
áœá¬á
á®áá¬ážááŒááºážááŸááááŸáááᯠááá¯ááºááá¯ááºá
á
áºáá±ážááŒááºážá DUCET á¡áá±á¬áºáá±áž áá»ááºážá
áá¬áá±á¬ááºážáá±ááá·áº áá¶áá±á¬ááºážáá±á¬ááºáá
áœá¬á áá»áœááºáá±á¬áºááá¯á·á¡ááœáẠUnicode áá²á· á¡áá¯ááºáá¯ááºááá¯á·á¡ááœáẠá
á¬ááŒáá·áºááá¯ááºááᯠá
á¶ááá°áá¬áጠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá
áºáᯠááŸááá«áááºá
á€á
á¬ááŒáá·áºááá¯ááºá áááºááá¯ááºááœáẠáá±á¬áºáá¯ááºáá±ážáá¬ážáá²á·áááºá IBM áá¡áá«á¡ááẠááá¯ááºááŒá
á¬áá»ááºááŸá¬áá»á¬áž ááŸááá«áááºá
ÐбакаМПв ÐОÑ
аОл;ЌалÑÑ
ÐлкОМа Ðлла;кÑаМПвÑОÑа
ÐваМПв ÐМЎÑей;ÑлеÑаÑÑ
ÐваМПва Ðлла;аЎвПкаÑ
á
áá¬ážáá
ááºá website ááᯠááŒááºáááºáááºáá¬áá¬ááŒááºáž áá¯ááºááŒááºá¡ááŸááºá¡áá¬ážáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá« ááŸáá¯ááºážááŸááºááŸá¯ algorithm á ááŸááºážáááºážáá»ááºááᯠáááºááœá±á·ááá¯ááºáááºá á¥ááá¬áá»á¬ážááœááº
áá°áá®áá¯ááºááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž áá°áá®áá±ážáá±á¬áºáááºáž áá°ážáááºážáá±á¬á¡ááŒá¯á¡áá°á¡ááœáẠá¡ááŒá±á¬ááºážáááºážáá»á¬ážááᯠááŸá¬ááœá±áá«á ááŒáá¹áᬠв Linux ááᯠáááŒá¬ážáá áºáá±áá¬ááᯠááœá¬ážááááºá
glibc ááœáẠá á®ááŒááºáž
á¡áá¯á¶ážáááºáá±á¬á¡áááºážá¡ááŒá áºáá¯ááºáá»á¬ážááᯠá¡ááŒááºááŒáá·áºááŸá¯áá«á ááŒáá¹áᬠá០GNU Core á¡áá¯á¶ážá¡áá±á¬ááºáá»á¬áž utility ááá¯ááºááá¯ááºááœááºá localization ááẠvariable ááááºááŸááááºááá¯ážááá¯áá¯á¶ááŸáááºááŒááºážááŸáááºážáááºáá¬áááºááá¯ááŒááá²á·áááºá LC_COLLATE á¡ááŸá¬ážááŸá¬ááŒááºáá¯ááºááœáẠá¡áá¯ááºáá¯ááºáá±á¬á¡áá«-
$ sort --debug buhg.txt > buhg.srt
sort: using âen_US.UTF8â sorting rules
á á¶áá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯á á á¬ááŒá±á¬ááºážááŸáá¯ááºážááŸááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá strcollááá¯ááá¯áá¬á á á¬ááŒáá·áºááá¯ááºáá²ááŸá¬ á áááºáááºá á¬ážá áá¬ááœá± ááŸááááºá glibc.
á¡áá±á«áº áá®áá® á
á®áá¶ááááºáž glibc string comparison á¡ááœáẠáááºááœáŸááºážáááºá
á
áááºáááºá
á¬ážá
áá¬á¡áá±á¬ááºážáá¯á¶ážá¡áá»ááºá¡áááºááœá±áá±á«áºááŸá¬ áá®áá® ááá·áºááºáá
áºáá¯ááŸááá²á·áááºá
ááᯠáá»áœááºá¯ááºááá¯á·ááœáẠalgorithm ááŸáá·áº auxiliary tables áá»á¬ážá¡ááŒá±á¬ááºáž á¡áá»ááºá¡áááºá¡á¬ážáá¯á¶ážááᯠáááŸááá¬ážááŒá®ážá áá»áœááºá¯ááºááá¯á·ááẠáá°áááŒá¿áá¬ááá¯á· ááŒááºááœá¬ážáᬠáá¯ááŸá¬ážáá¬áá¬á áá¬ážááœááºážááŸá á á¬ááŒá±á¬ááºážáá»á¬ážááᯠááŸááºáááºá áœá¬á á®áááºááᯠáá¬ážáááºááá¯ááºáááºá
á ISO 14651/14652
áá»áœááºá¯ááºááá¯á·á áááºáááºá á¬ážáá±á¬ááá¬ážáá¡áááºážá¡ááŒá áºáá¯áẠCTT ááŒáá·áºááŒá°ážááŸá¯á¡áá»á¬ážá á¯ááœáẠLinux ááᯠáááºááá±á¬ááºááœááºááŸááááºá /usr/share/i18n/locales/. ááá¬ážááẠááá¯ááºáá²ááœáẠááŸááá±áááºá iso14651_t1_áá¯á¶. áá«ááá¯ááẠáá«á ááá¯ááºáááºážááœáŸááºáá»ááºáá«á iso14651_t1_common ááᯠáá°ážáá°áá«á ááá¯ááºááœááºáá«áááºáááºá iso14651_t1áá áºáááºá á¡áá«á¡áááºá ááá¯ááºáá¶áá±á¬áº ááá¯ááºáá»á¬ážááœáẠááá·áºááœááºážáá¬ážáááºá U.S.ááœáẠО ru_RU. ááŒáá·áºááŒá°ážááŸá¯á¡áá»á¬ážá á¯ááœáẠLinux ááᯠá¡áááºážá¡ááŒá áºááá¯ááºáá»á¬ážá¡á¬ážáá¯á¶ážááẠá¡ááŒá±áá¶ááá·áºááœááºážááŸá¯ááœáẠáá«áááºáá±á¬áºáááºáž áááºážááá¯á·áááŸááá«áá ááŒáá·áºááŒá°ážááŸá¯á០á¡ááá¯áááºáá±á·ááºá»áá áºáá¯ááᯠááá·áºááœááºážááááºááŒá áºáá«áááºá
ááá¯ááºááœá²á·á
ááºážáá¯á¶ iso14651_t1 áá¬áááºáááºáá±á¬ááºááŒááºážá¡ááœáẠáááºááŸá¬ážáá±á¬ á
ááºážáá»ááºážáá»á¬áž ááá«ááŸááá² á¡ááœááºá¡áá»ááºážáááºáááºáᯠáááºááá±á¬áºáááºáž áááºážááá¯ááŒáá·áºáá»áŸáẠá¡áá¬á¡á¬ážáá¯á¶ážááẠááá¯ážááŸááºážáá«áááºá ááœá²á·á
ááºážáá¯á¶ááᯠá
á¶ááŸá¯ááºážááŸá¬ áá±á¬áºááŒáá¬ážáááºá ISO ááᯠ14652áááºááá¯ááºá០áá±á«ááºážáá¯ááºáá¯ááºááá¯ááºááá·áº áááá¹áá°
ááá¯ááºááœá²á·á ááºážáá¯á¶ááẠá€áá²á·ááá¯á·ááŒá áºáááº-
áá°áááºážá¡á¬ážááŒáá·áºá áá¬ááºáá±á¬ááºááᯠááŸá±á¬ááºáááºáá¬ááºáá±á¬ááºá¡ááŒá Ạá¡áá¯á¶ážááŒá¯ááŒá®áž á á¬áá¯á¶áž # ááŒá®ážáá±á¬áẠá á¬ááŒá±á¬ááºážáá¡áá¯á¶ážááẠááŸááºáá»ááºáá áºáá¯ááŒá áºáááºá áááºá¹áá±áááŸá áºáá¯áá¯á¶ážááᯠááŒááºáááºáááºááŸááºááá¯ááºáááºá áááºážááẠááá¬ážááá¬ážááŸááºážá¡áá áºááœáẠáá¯ááºáá±á¬ááºáááº-
escape_char /
comment_char %
ááá¯ááºááœáẠáá±á¬áºáááºááŸá ááá¯áááºáá»á¬áž áá«áááºáá«áááºá ááá¯á·ááá¯áẠ(áááºááŸá¬áá² x - hexadecimal ááááºáž)á áááºážááẠáá¯ááºáá¶áá«ááºááœáẠáá°áá®áá¯ááºáá¯ááºá¡ááŸááºáá»á¬ážá ááá¹ááááŒá±á¬áẠááá¯ááºá á¬ážááŒá¯ááŸá¯ááŒá áºáááºá UCS-4 (UTF-32) áá±á¬áá·áºááœááºážá ááœááºáá»á¬ážááŸá á¡ááŒá¬ážááŒááºá ááºáá»á¬áž (á¡áá«á¡ááẠ, <2> ááŸáá·áºá¡ááŒá¬ážá¡áá¬áá»á¬áž) ááẠá¡ááŒá±á¬ááºážá¡áá¬ááŒááºáááœáẠá¡áááá¹áá«ááºá¡áááºážáááºáá¬ááŸááá±á¬ ááá¯ážááŸááºážáá±á¬ ááŒáá¯ážá ááºááááºážáá±áá»á¬ážáᯠáá°ááá«áááºá
á¡áááºáž LC_COLLATE ááá¯ááºážáá»á¬ážá ááŸáá¯ááºážááŸááºááŸá¯ááᯠáá±á¬áºááŒááá·áº áá±áá¬ááᯠáá±á¬ááºáá áºáá¯á á áááºáááºáᯠáá»áœááºá¯ááºááá¯á·ááᯠááŒá±á¬ááŒáááºá
ááááŠážá áœá¬á ááŸáá¯ááºážááŸááºááá¬ážááŸá á¡áá±ážáá»á¬ážá¡ááœáẠá¡áááºáá»á¬ážááŸáá·áº áááºá¹áá±ááá±á«ááºážá ááºááŸá¯á¡ááœáẠá¡áááºáá»á¬ážááᯠáááºááŸááºáá±ážáá«áááºá áá±áá°áá»á¡á¬ážááŒáá·áºá á¡áááºááŸá áºáá»áá¯ážááẠááá°áá®ááá·áºá¡áá¬ááŸá áºáá¯ááŸáá·áºáááºááá¯ááºáá±á¬áºáááºáž á¡ááŸááºááááºááá¯ááºááœáẠáááºážááá¯á·ááẠáá±á¬ááŸá±á¬áá¬ážáááºá á¡áá±ážáá»á¬ážáá¡áááºáá»á¬ážááᯠkeyword ááŒáá·áºáááºááŸááºáá¬ážáááºá collating-áááºá¹áá±á á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº (comparison character) ááŸáá¯ááºážááŸááºáá±á¬á¡áá«ááœáẠáá°áá®áá±á¬á¡áá±ážáá»áááºááŸááá±á¬ áá°áá®áá¯ááºá¡áá¹ááá¬áá»á¬ážááᯠáá®áá»áŸáá±á¬á¡áá¹ááá¬á¡ááŒá ẠáááºááŸááºáááºááŒá áºáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá
áááºááŸáááá¯ááºáááºážááŒááºááŸá¯ááœáẠá¡ááá¯ááºážá á á¯á á¯áá±á«ááºážá¡ááŸááºááŸá¬ ááá¯ááºáž 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>"
- collating-áááºá¹áá±á ááŒáá¯ážáá áºáá»á±á¬ááºážááᯠááŸááºáááºážáááºáááºá OSMANYA á áá±ážáá¡áááºáá»á¬ážááá¬ážááœááº
- collating-áááºá¹áá±á .á ááŸá±á·áááºáá«ááŸááá±á¬ á¡áááºáá»á¬ážá á¡ááœá²ááá¯áẠááŸááºáá¯á¶áááºáááºá S ááŸáá·áº hexadecimal ááááºážááá¬ááºážáá»á¬ážá០áá±á¬ááºáááºááœá² 1D000 ááá¯á· 1D35F.
- FFFF в collating-áááºá¹áá±á ááá¹ááááááºážááááºážááœáẠáááºááŸááºáááá¯ážáá¬ážáá±á¬ ááááºážááŒáá·áºááŒá®ážááŸáá·áº áá°áá±á¬áºáááºážá á¡á²áá«á áá¬áááºáá²á·áá°ááá¯ááºáááºá
- áá¬ááá»á±á¬ááᯠencoding ááœáẠcode point ááá¯ááá¯ááá¯áááºá UCS-4
- collating-ááŒááºá áẠá០" â áá°áá®áá¯ááºá¡á ááºáá áºá á¯á¶á¡ááœáẠá¡áááºá¡áá áºááᯠááŸááºáá¯á¶áááºáááºá
á¡áá±ážáá»á¬ážáá¡áááºáá»á¬ážááá¯áááºááŸááºááŒá®ážáááºááŸáá·áºá¡ááŸááºááááºá¡áá±ážáá»áááºáá»á¬ážááá¯áááºááŸááºáááºá ááŸáá¯ááºážááŸááºááŸá¯ááœáẠááŒá®ážáááºáááºáááºážáá±á¬ áááºáá¶áá±ážáᬠá¡áá±ážááŒá®ážáá±á¬ááŒá±á¬áá·áºá á¡áá±ážáá»á¬ážááᯠááá¯ážááŸááºážáá±á¬ á¡áááºá á¬áááºážá á¡á á®á¡á á¥áºááŒáá·áº áá¯á¶ážááŒááºáááºá "áá±á«á·áá«ážáá±á¬" á¡áá±ážáá»áááºáá»á¬ážááᯠáŠážá áœá¬áá±á¬áºááŒáá¬ážááŒá®ážá ááá¯á·áá±á¬áẠ"ááá¯ááá¯áá±ážáá¶áá±á¬" áá»á¬ážááŒá áºáááºá áá°áá®áá¯áẠá¡áá¹ááá¬áá áºáá¯á á®ááᯠááá°áá®áá±á¬ á¡áá±ážáá±ážáá»áá¯áž áááºááŸááºáá¬ážááŒá±á¬ááºáž áááááŒá¯áá«á á€ááœáẠáááºážááá¯á·ááᯠáá áºáá¯áááºážáá±á¬ á¡á á®á¡á á¥áºá¡ááŒá Ạáá±á«ááºážá ááºáá¬ážáááºá áá®á¡áá¯áá®á¡áá áááºááá·áºáááºá¹áá±áá¡áááºááá¯áááᯠá¡ááá·áºáá±ážááá·áºááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáá±á¬áºáááºáž áá®ááœááºáá°áá»á¬ážááẠá áááºááá¯ááºážááá¯ááºáá¬á¡áááºáá»á¬ážááᯠá¡ááá·áºáá»á¬ážá¡ááŒá Ạááœá²ááŒá¬ážáá¬ážááŒá±á¬ááºáž ááŸááºáá»ááºáá»á¬ážá áá±á¬áºááŒáááºá
% 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_start ááŸáá¯ááºážááŸááºááŸá¯á¡ááá·áºáá áºáá¯á á®ááœáẠáááºááá·áº áŠážáááºáá¬á¡áááºážáá»á¬ážááᯠá áááºáááºáááºááᯠáá¯á¶ážááŒááºáá«á áá¯á¶áá±áááºáááºá ááŸá±á·ááá¯á·. á¡ááá¯ááºážáááá¯ááºáááºááœáẠáááºá¹áá±ááá¯ááºááŸáá·áº áááºážáá¡áá±ážáá±ážáá¯áá«ááŸááá±á¬ ááá¯ááºážáá»á¬ážáá«ááŸááááºá áá¬ááºáá±á¬ááºáá¯ááºááᯠáá¬ááºáá±á¬ááºááá¯ááºááá¯ááºá áá¯ááºá¡ááŸáẠááá¯á·ááá¯áẠááááºá áááºááŸááºáá¬ážáá±á¬ áááºá¹áá±áá¡áááºááŒáá·áº ááá¯ááºá á¬ážááŒá¯ááá¯ááºáááºá á¡áá±ážáá»áááºáá»á¬ážááᯠáááºá¹áá±áá¡áááºáá»á¬ážá áá¯ááºá¡ááŸááºáá»á¬ážá ááá¯á·ááá¯áẠáááºá¹áá±ááá»á¬ážááá¯ááºááá¯ááºáááºáž áá±ážááá¯ááºáá«áááºá áá¯ááºá¡ááŸááºáá»á¬áž ááá¯á·ááá¯áẠá á¬áá¯á¶ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áá áááºážááá¯á·á á¡áá±ážáá»áááºááẠáá¯ááºá¡ááŸáẠ(áá°áá®áá¯ááºááá¬ážááŸá áá±áá¬) á ááááºážáááºááá¯ážááŸáá·áº áá°áá®áááºá á¡ááá¡áá» ááá±á¬áºááŒáá¬ážáá±á¬ á á¬áá¯á¶ážáá»á¬ážááᯠ(áá»áœááºáá±á¬áºáá¬ážáááºááá±á¬ááº) áá°áá®áá¯ááºááá¬ážááŸá á¡áá±á¡áá¬ážááŸáá·áº ááá¯ááºáá®áá±á¬ áááºáá¡áá±ážáá»áááºááŒáá·áº ááá¬ážááœáẠáááºááŸááºáá¬ážáááºá á¡áá°ážá¡áá±ážáá»áááºáááºááá¯áž áá»á áºáá»á°ááŸá¯áá« áááºá¹áá±áááᯠááá·áºáá»á±á¬áºáá±á¬ ááŸáá¯ááºážááŸááºááŸá¯á¡ááá·áºááœáẠáá»á áºáá»á°ááŸá¯áá¬ážááŒá±á¬ááºáž ááá¯ááá¯áááºá
áá»áááºááœááºáááœá²á·á ááºážáá¯á¶ááᯠááá¯ááºááŒáááºá á¡ááœááºáááá¬áááºááŸá¬ážáá±á¬ á¡ááá¯ááºážáá¯á¶ážááá¯ááºážááᯠáá«ááœá±ážáá»ááºáá²á·áááº-
- áá¯á¶ážááá»á áºáá»á°ááŸá¯áá¬ážáá±á¬áá¬ááºáá±á¬ááºáá»á¬áž
- áááá¡ááá·áºááŸá áºáá¯ááŸá áá¶áá«ááºáá¯á¶ážááŸáá·áº áá®áá»áŸáá±á¬ áááºá¹áá±ááá»á¬áž
- ááá¯ááºáá¬áá áºáá»á¬ážááá«áááºááá·áº Cyrillic á¡áá¹ááá¬áá¡á á ááá¯á·ááŒá±á¬áá·áº á¡áááá¡á¬ážááŒáá·áº áááááŸáá·áº ááááá¡ááá·áºááŒáá·áº á á®áá¬ážáááºá
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 strings áá»á¬ážááᯠááŸáá¯ááºážááŸááºááá·áºá¡áá« (space á¡áá«á¡áááº) ááᯠá¡ááŒá²áááºážáá®ážáá«áž áá»á áºáá»á°ááŸá¯áá¬ážáááºá ááŒáœááºážáá»ááºá¡áá±ááŒáá·áº áá°áá®áá±á¬áá±áá¬áá»á¬ážááœáẠááœá±á·áááá·áº áá¯ááºááŒááºá¡ááŸááºá¡áá¬ážáá»á¬ážááŸááœá²á á¡áá¬á¡á¬ážáá¯á¶ážááœáẠááá¯ááºáá®áá±á¬ áá»ááºážááŒá±á¬ááºážáá»á¬ážáá¬ááŒá áºáááºá ááŸáá¯ááºážááŸááºááŸá¯ á¡ááºáááá¯áá®áááºá¡ááœáẠáá»áœááºá¯ááºá á¥ááᬠ(á á®ááœá²ááŒá®ážáá±á¬ááº) á០áá»ááºážáá»á¬ážááẠá€áá²á·ááá¯á· ááŒá áºáááº-
ÐбакаМПвÐОÑ
аОлЌалÑÑ
ÐлкОМаÐллакÑаМПвÑОÑа
ÐваМПваÐллаЌалÑÑ
ÐваМПвÐМЎÑейÑлеÑаÑÑ
á áá±ážááá¬ážááœáẠáá¯ááŸá¬ážááᯠá á¬áá¯á¶ážááŒá®áž á á¬áá¯á¶ážáá±ážáá»á¬áž (ááááá¡ááá·áºááœááºá ááẠááá¯áá±ážáááºá ) á¡áá»áá¯ážá¡á á¬ážááœá²áá¯á¶á áá¯á¶ážáááŸááºáá«áááºá
ááááºážááŸááºáá áºáá¯ááᯠáááºááŸááºáá±á¬á¡áá« LC_COLLATE=C 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'
};
áá°áá®áá¯ááºááœáẠáá¯ááºá¡ááŸáẠРááẠA ááŸá±á·ááœáẠáá±á«áºáá¬áá±á¬ááŒá±á¬áá·áºá ááŒáá¯ážáá»á¬ážááᯠá¡ááá¯ááºááá·áºá á®áá¬ážáááºá
á á¬áá¬ážááŸáá·áº ááœáááá¬ážáá»á¬áž
ááŸááºážáá±áááºááŸá¬á string comparison ááẠá¡ááœááºá¡áá¯á¶ážáá»á¬ážáá±á¬ áá¯ááºáá±á¬ááºááŸá¯áá áºáá¯ááŒá áºááŒá®áž table parsing ááŒá áºáááºá CTT á¡áá±á¬áºáá±áž á¡áá¯ááºá¡áá»áá»á¬ážáá²á· áá¯ááºáááºážá ááºáá áºáá¯áá«á ááá¬ážááá¯á·áááºáá±á¬ááºááœáá·áºááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬ááºá áááºážááᯠcommand ááŒáá·áº binary áá¯á¶á á¶á¡ááŒá Ạá á¯á ááºážáá¬ážáááºá localdef.
á¡ááœá²á· localdef á¡áá»áá¯ážáá¬ážááœááºááŒááºááá¹ááá¬áá»á¬áž ááá¬ážáá«áá±á¬ ááá¯ááºáá áºáá¯ááᯠááá·áºáááºáá»ááºáá»á¬ážá¡ááŒá Ạáááºáá¶ááẠ(ááœá±ážáá»ááºááŸá¯ -i) ááœáẠá á¬áá¯á¶ážá¡á¬ážáá¯á¶ážááᯠáá°áá®áá¯ááºá¡á ááºáá»á¬ážááŒáá·áº ááá¯ááºá á¬ážááŒá¯ááŒá®áž áá°áá®áá¯ááºá¡á ááºáá»á¬ážááŸáá·áº áá®ážááŒá¬ážáá¯ááºáá¶áá«ááºáá áºáá¯á á¡áá¹ááá¬áá»á¬ážááŒá¬áž á á¬áá±ážá á¬áá°ááá¯áẠ(ááœá±ážáá»ááºááœáá·áºá -f) á¡áá¯ááºáááááºá¡áá±ááŒáá·áºá áá±á¬ááºáá¯á¶ážááá·áºáááºáá±á¬ááºááœááºáááºááŸááºáá¬ážáá±á¬á¡áááºááŒáá·áº locale á¡ááœáẠbinary ááá¯ááºáá»á¬ážááá¯áááºáá®ážáá¬ážáááºá
glibc ááœáááá¯ááºáá±á¬áºáááºááŸá áºáá¯ááᯠáá¶á·ááá¯ážáááº- "ááá¯ážáá¬" ááŸáá·áº "áá±ááºáá®"á
ááá¬ážááá¯ážáá»áá±á¬áºáááºááẠáááºáá±áá¬áá¡áááºááẠáááºážááŒá±á¬ááºážááœá²áá¡áááºááᯠááá¯ááá¯áááºá /usr/lib/locale/. á€ááá¯ááºááœá²ááœá²ááẠbinary ááá¯ááºáá»á¬ážááᯠááááºážáááºážáááºá LC_COLLATE, LC_CTYPE, LC_TIME áá±á¬áẠ... ááŒá®ážáá±á¬á·á ááᯠLC_IDENTIFICATION áá±ááááá¬ážáááºá¡ááẠ(áááºážááœáŸááºá¡áááºááŸáá·áº ááœá²ááŒá¬ážááá¯ááºáááº) ááŸáá·áº ááŸááºáá»ááºáá»á¬ážáá«ááŸááááºá
áá±ááºáá®áá±á¬áºáááºááẠááŸááºáááºážáá áºáá¯áááºážááœáẠáá±áá¬áá±áá¡á¬ážáá¯á¶ážááᯠááááºážáááºážááŒááºáž áá«áááºáááºá /usr/lib/locale/locale-archiveá¡áá¯á¶ážááŒá¯ááá·áº áá¯ááºáááºážá ááºá¡á¬ážáá¯á¶ážá virtual memory ááœáẠáá¯á¶áá±á¬áºáá¬ážáááºá glibc. áá±ááºáá®áá±á¬áºáááºááŸá áá±áá¡áááºááẠá¡áá»áá¯á·áá±á¬ canonization á¡á á¡áá»á¯á¶ážáááºááẠ- á á¬áá¯á¶ážá¡áá±ážááá¯á· á á¬áá¯á¶ážá¡áá±ážááá¯á· áá»áŸá±á¬á·áá»áá¬ážáá±á¬ ááááºážáá»á¬ážááŸáá·áº á á¬áá¯á¶ážáá»á¬ážáᬠáá¯ááºáá¶áá«ááºáá»á¬ážááœáẠáá»ááºááŸááá±áá«áááºá áá«ááŒá±á¬áá·áº ru_RU.KOI8-R, á¡ááŒá áºáááºáááºááŒááºážááá¯á·áá±á¬ááºáááá·áºáááºá ru_RU.koi8r.
ááá·áºááœááºážááá·áºááá¯ááºáá»á¬ážááᯠáááºááŸááááºážááœáŸááºááœááºáá¬áá áááºážááœáŸááºáá»á¬ážááœááºáá« ááŸá¬ááœá±áááºá /usr/share/i18n/locales/ О /usr/share/i18n/charmaps/ ááá¯ááºáá»á¬ážá¡ááœáẠCTT ááŸáá·áº encoding ááá¯ááºáá»á¬ážááᯠááœá±á·ááá
á¥ááá¬á á¡áááá·áº
localedef -i ru_RU -f MAC-CYRILLIC ru_RU.MAC-CYRILLIC
ááá¯ááºááᯠcompile áá¯ááºáá«áááá·áºáááºá /usr/share/i18n/locales/ru_RU encoding ááá¯ááºááᯠá¡áá¯á¶ážááŒá¯ /usr/share/i18n/charmaps/MAC-CYRILLIC.gz ááááºááá¯ááááºážáááºážáá«á /usr/lib/locale/locale-archive áá¬áááºá¡á±á¬ááºááŸá¬ ru_RU.maccyrillic
ááẠvariable ááá¯áááºááŸááºáá«á LANG = en_US.UTF-8 á¡ááá¯áá« glibc á¡á±á¬ááºáá« ááá¯ááºáá»á¬ážááŸáá·áº áááºážááœáŸááºáá»á¬áž á á¡á á®á¡á á¥áº ááœáẠlocale binaries ááᯠááŸá¬áá«ááẠá
/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/
áá±ááá áºáá¯ááẠááá¯ážáá¬ááŸáá·áº áá±ááºáá®áá¯á¶á á¶áá»á¬áž ááŸá áºáá»áá¯ážáá¯á¶ážááŒá áºáá±á«áºáá«á áá±ááºáá®áá±á¬áá¯á¶á á¶ááᯠáŠážá á¬ážáá±ážáááºá
command ááŒáá·áº compiled locales á á¬áááºážááᯠáááºááŒáá·áºááŸá¯ááá¯ááºáá«áááºá áá±áááœááºáž -a.
áááºáááŸáá¯ááºážááŸááºááá¬ážááá¯ááŒááºáááºááŒááºážá
ááá¯á¡áá« á¡ááááá¬ááŒáá·áº áááºáááºááá¯ááºáá±á¬ááºáá¬ážáá±á¬ áááºáááá¯ááºááá¯ááºá á¶ááŒá á¬ááŒá±á¬ááºáž ááŸáá¯ááºážááŸááºááá¬ážááᯠáááºáááºáá®ážááá¯ááºáááºá á€ááá¬ážááẠá¡áá¹ááᬠРá¡áá«á¡ááẠáá¯ááŸá¬ážá á¬áá¯á¶ážáá»á¬ážááᯠááŸááºáááºá áœá¬ ááŸáá¯ááºážááŸááºááá·áºááŒá®áž áá áºáá»áááºáááºážááœáẠááá¬ážááŸáá·áºá¡áá® áááºáá¯á¶á¡ááŸááºá¡áá¬ážáá»á¬ážááᯠááá·áºááœááºážá ááºážá á¬ážáá«á ASCII.
áááºáááá¯ááºááá¯ááºá á®ááŒááºážááá¬ážááá¯ááŒááºáááºááŒááºážáá¯ááºáááºážá ááºááœáẠá¡ááá·áºááŸá áºááá·áºáá«áááºáááº- á¡áá±ážááá¬ážááá¯áááºážááŒááºááŒááºážááŸáá·áº áááºážááᯠcommand ááŒáá·áº binary áá¯á¶á á¶ááá¯á·á á¯á ááºážááŒááºáž localdef.
ááŸáá¯ááºážááŸááºááá¬ážá¡á¬áž áá±á¬áºáááºááŒáá·áº áááºážááŒááºááŸá¯áá¯ááºáá»á áááẠá¡áááºážáá¯á¶ážááŒáá·áº áá»áááºááŸáááá¯ááºá á±ááẠISO ááᯠ14652 ááŸáááŒá®ážáá¬ážááá¬ážáá áºáá¯áá¡áá±ážáá»áááºááá¯áá»áááºááŸááááºá¡ááá¯ááºážáá»á¬ážááá¯áá±ážáá¬ážáááºá ááá¹áááẠáá±á¬á·áá»ááºá áá¬ážáá¯á¶ážááŒáá·áº á áááºáááºá ááŒááºá á®-ááŒá®áž á¡á á¬ážááá¯ážááŒá®ážááá·áºáá±á¬áẠá¡áá±á¡áá¬ážááᯠááœáŸááºááŒáááºá á¡ááá¯ááºážááẠá á¬ááŒá±á¬ááºážááŒáá·áº á¡áá¯á¶ážáááºáááºá ááŒááºá á®-ááŒá®áž. ááá¬ážá á¡ááá¯ááºážáá»á¬ážá áœá¬ááᯠááŒá¯ááŒááºááẠááá¯á¡ááºáá«áá ááá¯ááá¹ááá áºáá¯á á®á¡ááœáẠá¡ááá¯ááºážáá áºáá¯ááᯠáááºáá®ážáá¬ážáááºá
ááá¯ááºáá»á¬ážá áá¬ážááŸááºážá¡áá áºáá»á¬ážááᯠáá»áœááºá¯áẠáá°ážáá°áá¬ážáá«áááºá iso14651_t1_áá¯á¶ О ru_RU repository á០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 в Linux ááᯠáááºážááŒá±á¬ááºážá¡á¬ážáá¯á¶ážááᯠvariable áá áºáá¯ááŸáááá·áº overridden áá¯ááºááá¯ááºáá±á¬ base directory á០áá±ááœááºáá«áááºá LOCPATH. áááºáááºááŒá®ážáá±á¬áẠLOCPATH=~/.local/lib/locale/ áá±áá¬áá»áá¬ážááŒááºážááá¯ááºáᬠááá¯ááºá¡á¬ážáá¯á¶ážááᯠáá»áœááºá¯ááºáááá¯áá«ááœááºáᬠááŸá¬ááœá±áá«áááºá ááŒá±á¬ááºážáá²ááá¯ááºáá±á¬áááºááŸááºááŸá¯ááŒáá·áº áá±ááá¹áááá»á¬ážááᯠááááºážáááºážáá«á LOCPATH áá»á áºáá»á°ááŸá¯áá¬ážáááºá
á€áááºááŸá¬ á¡áá¯á¶ážá¡ááŒááºá ááºážáááºááŸá¯ááŒá áºáááºá
$> LANG=ru_MY.UTF-8 LOCPATH=~/.local/lib/locale/ sort buhg.txt
ÐбакаМПв ÐОÑ
аОл;ЌалÑÑ
ÐлкОМа Ðлла;кÑаМПвÑОÑа
ÐваМПв ÐМЎÑей;ÑлеÑаÑÑ
ÐваМПва Ðлла;аЎвПкаÑ
áá°áž! áá«ááá¯á·áá¯ááºáá²á·áááº!
á¡ááá¯áá« bug ááœá±á¡áá±á«áºá¡áá¯ááº
á¡á ááœááºáá±á¬áºááŒáá¬ážáá±á¬ string sorting ááŸáá·áºáááºáááºáá±á¬áá±ážááœááºážáá»á¬ážááᯠáá»áœááºá¯ááºááŒá±ááŒá®ážááŒá áºáááºá ááá¯á·áá±á¬áº errors ááŸáá·áºáááºáááºááŒá®áž - ááŒááºááá¯ááºáá±á¬ ááŸáá·áº áááŒááºááá¯ááºáá±á¬ áá±ážááœááºážá¡áá»áá¯á·ááŸááá«áááºá
áá°áááŒá¿áá¬ááᯠááŒááºááŒáá·áºáá¡á±á¬ááºá
ááŸáá·áº á¡á á®á¡á áẠááŒáá¹áᬠááŸáá·áº á¡á á®á¡á áẠáá°ážáá±á«ááºáž áá°áá®áá±á¬ string comparison functions áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á glibc. á¡á²áá« áááºááá¯ááŒá áºáá¬áá²á áá°ážáá±á«ááºáž á¡áááá·áºááŒáá·áº á á®áá¬ážáá±á¬ á¡áááºážáá»á¬ážáá±á«áºááœáẠá á®áááºá¡ááŸá¬ážáá áºáᯠáá±ážáá²á·áááºá ááŒáá¹áᬠáá±áááœáẠen_US.UTF-8? á¡ááŒá±á ááá¯ážááŸááºážáá«ááẠááŒáá¹áᬠstring áá áºáá¯áá¯á¶ážááᯠááŸáá¯ááºážááŸááºááŒá®ážá áá°ážáá±á«ááºáž áá¯á¶ááŸááºá¡á¬ážááŒáá·áº string áá¡á ááẠááááá±áá¬ááœááºá á¬áá¯á¶ážá¡áá áá±á¬á·ááá¯áᬠááŸáá¯ááºážááŸááºáááºá áá»áœááºá¯ááºáááá°áá¬ááœááºá áá»ááºážááŒá±á¬ááºážáá»á¬ážá០áááá áá¬ážáá¯á¶ážáá»á¬ážááᯠá á®áá¬ážááŒááºážááẠááŒá®ážááŒáá·áºá á¯á¶áá±á¬áá»ááºážááŒá±á¬ááºážáá»á¬áž á á®ááŒááºážááŸáá·áº áááá¯ááºáá®áá±á¬ááŒá±á¬áá·áº áááºážááẠá¡ááŸá¬ážá¡ááœááºážáá áºáᯠááŒá áºáá±á«áºáá²á·áááºá
áá±áá¬áá±á "ááᯠC" á á®áá¬ážáá±á¬á á¬ááŒá±á¬ááºážáá»á¬ážááœáẠááááá±áá¬á¡áá áááŠážá á¬ááŒá±á¬ááºážááœá²áá»á¬ážááá¯áááºáž á á®áá¬ážáááºáᯠá¡á¬ááá¶áá±á¬áºáááºáž áááºážááẠá¡ááŸá¬ážááá¯áá¯á¶ážááœááºáá¬ážááŒááºážááŒá áºáááºá á¡ááŸá¬ážá¡ááœááºáž áááºáá±á·áá»áºááá«áá² ááŸá¬ážááœááºážáá±á¬ ááá¯ááºáá±á«ááºážá ááºážááŒááºážááááºááᯠáá±ážááá·áº áá±áᬠ(áá»áá¯ážááá¯ážáá°áá°áá»á¬ážá ááá¯á·áá±á¬áº áááá¡ááẠááá°áá°áá»á¬áž) ááᯠááœá±ážáá»ááºááá¯ááºáááºá ááá¯áá»ááºááẠáá°ážáá±á«ááºáž ááá¯ááºááá¯ááºážáá»á¬ážááᯠáá¬áááºá¡ááŒáá·áºá¡á á¯á¶ááŒáá·áº áá±á«ááºážá ááºážááá¯ááºáááºá ááá¯á·áá±á¬áẠááŸááºáááºáá±á¬áááºážáááºážááŸá¬ á¡ááœááºááŒá¬ážáá¬ážááŒááºážá¡á¬áž á¡ááá¡áááºáž áááºááŸááºáááºááŸáá·áº ááá¯ááºážáá áºáá¯áá¯á¶ážááŒáá·áºááá¯ááºáá² áá±á¬á·á¡ááœááºááŒáá·áº á á®áááºááŒá áºáááºá á€ááá á¹á ááœááºá áá±á«ááºážá ááºážááŸá¯ááẠááŸááºáááºá áœá¬ áááºáááºáá¯ááºáá±á¬ááºáááºááŒá áºááŒá®áž áááºááá·áºáá±áá¬ááááᯠá¡ááŸá¬ážá¡ááœááºážáá»á¬áž ááŸááááºááá¯ááºáá«á
$> sort -t ; -k 1 buhg.txt > buhg.srt
$> sort -t ; -k 1 mail.txt > mail.srt
$> join -t ; buhg.srt mail.srt > result
áá¯ááºááŒá±á¬ááºážááŒááºážááœáẠááá°áá¬ááᯠá¡á±á¬ááºááŒááºá áœá¬ áá¯ááºáá±á¬ááºáá²á·áááºá CP1251 á¡ááŒá¬ážá¡ááŸá¬ážáá áºáá¯áá«ááŸááááºá á¡ááŸááºááŸá¬ áá»áœááºá¯ááºáááá¬ážáá±á¬ ááŒáá·áºáá»á®ááŸá¯á¡á¬ážáá¯á¶ážááœáẠááŒá áºáá«áááºá Linux ááᯠáá¯ááºááá¯ážáá¬ážáá±á¬áá±áᬠáá»á±á¬ááºáá¯á¶ážáá±áá«áááºá ru_RU.CP1251. á á¯á ááºážáá¬ážáá±á¬ áá±áááᯠááŸá¬áááœá±á·áá«áá ááŒáá¹áᬠbyte-by-byte ááŸáá¯ááºážááŸá¥áºááŸá¯ááᯠáá»áœááºá¯ááºááá¯á· ááááºáááááºá¡áá¯á¶ážááŒá¯áááºá áááºážááŸá¬ áá»áœááºá¯ááºááá¯á· ááœá±á·ááŸááá¬ážááá·áºá¡áá¬ááŒá áºáááºá
á áá¬ážáá ááºá á á¯á ááºážáá¬ážáá±á¬ áá±ááá»á¬ážááᯠáááºááŸááºážááá®ááá¯ááºááŸá¯ááŸáá·áº áááºáááºáá±á¬ áá±á¬ááºááẠáá»áá¯á·ááœááºážáá»ááºáá±ážáá áºáᯠááŸááá±ážáááºá á¡áááºážá¡ááœá²á· LOCPATH=/tmp áá±á-a áá±áá¡á¬ážáá¯á¶ážáá á¬áááºážááá¯áá±ážáááá·áºáááºá locale-archiveáá«áá±ááá·áº variable set ááœá±áá²á· 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
áá±á¬ááºáá»ááº
á¡áááºá áááºááẠstrings áá»á¬ážááᯠbytes á¡á á¯á¡áá±ážáá áºáá¯áᯠáááºááŒááºáá±á·ááŸááá±á¬ áááá¯ááááºáá¬áá áºáŠážááŒá áºáá«á áááºáááœá±ážáá»ááºááŸá¯ááŒá áºáááºá LC_COLLATE=C.
áááºááẠáá¬áá¬áá±áááá¬ááŸáẠááá¯á·ááá¯áẠá¡áááá¬ááºááŒá¯á á¯áá°ááŒá áºáá«á ááá·áºáá±áááœáẠá á¯á ááºážááŸá¯ááá¯áá±á¬ááºážáá«áááºá
á¡áááºá áááºááẠááá¯ážááŸááºážáá±á¬á¡áá¯á¶ážááŒá¯áá°ááŒá áºáá«áá ááá¯á¡áááá·áºááᯠáááºá¡áá¯á¶ážááŒá¯áááºáᬠááá¯á¡ááºáá«áááºá ls -a á¡á ááºááŒáá·áº á áááºáá±á¬ ááá¯ááºáá»á¬ážááᯠá¡áá¹ááá¬áá áºáá¯ááŸáá·áº á áááºááá·áº ááá¯ááºáá»á¬ážááŸáá·áº áá±á¬ááŸá±á¬á áá¯ááºáá±ážáááºá áááºážáá±á«ááºááŸá°ážá¡áááºáá»á¬ážááá¯á á®ááẠáááºážáá¡ááœááºážááá¯ááºážáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá·áºá ááá¯ááºáá»á¬ážááᯠá á¬áááºážáá¡á ááœáẠá¡á ááºááŒáá·áºá áááºááá·áºáááºá
ááá¯ážáá¬áž
source: www.habr.com