Quomodo Linux genera chordarum

introduction

Omnia coepi cum brevi scripto, quod electronica notitia coniungendae putabatur inscriptio conductos operarios ex indice electronicarum usorum electronicarum consecuti sunt, cum positionibus operariorum ex HR department datorum consecuti sunt. Utraeque tabulae exportatae sunt ad files textum Unicode Utf-8 et servatae sunt in Unix linea terminationes.

Summa mail.txt

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

Summa buhg.txt

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

Ut merge, fasciculi imperio Unix digestae sunt genus et ad initus progressionis Unix joinquem ex improviso error fefellit;

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

Prospectus genus eventum oculis ostendit id in genere, quale verum sit, sed in cognominibus masculis et femininis congruentibus, feminae ante mares venire;

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

Similis genus glitch in Unicode vel sicut manifestatio feminism in voluptua algorithm. Prima sane probabilior.

Sit enim nunc differamus join et focus in genus. Solvere quaestionem per scientifica ridere conemur. Primum mutemus locum a en on ru_RU. Ut exstat, satis esset ad ambitum variabilem constituere LC_COLLATEsed in nugis tempus terere non erimus;

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

Nihil mutandum.

Experiamur recode lima in unum byte modum translitterandi:

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

Iterum nihil mutandum.

Nihil potes, solutionem in Interreti quaerenda habebis. De cognominibus Russicis nihil directe est, sed quaestiones sunt de aliis odditatibus voluptua. Exempli gratia hic queritur: unix generis agitur '-' (dash) characteribus ut invisibilia. In summa, chordae "ab", "aa", "ac" commodatae sunt ut "aa", "ab", ac.

Responsum est ubique vexillum: programmate locali utere "C" et beatus eris. Experiamur:

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

Aliquid mutavit. Ivanovs recto ordine instruxit, etsi Yolkina alicubi excidit. Redeamus ad problema originale:

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

Hoc sine erroribus laboravit, ut in Interreti promiserat. Et hoc obstante Yolkina in prima acie.

Problema videtur solvendum, sed in casu tantum, experiamur aliam descriptam Russicam - Windows CP1251:

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

Proventus voluptua, satis impariter, congruebit cum locali "C"et omne igitur exemplum sine mendis fugit. Mystica quaedam.

Non amo mysticismum in programmando, quod errata plerumque larvas habent. Non habebimus serio inspicere quomodo operatur. genus et quid afficit? LC_COLLATE .

In fine conabor ad respondendum quaestionibus:

  • cur femina cognomina male disposita?
  • quod LANG=ru_RU.CP1251 conversus ad esse equivalent LANG=C
  • cur genus и join diversas ideas de ordine chordarum sorted
  • cur in omnibus meis exemplis errores sunt?
  • postremo quam ad generis chordas placet?

Unicode genus in

Prima statio erit technica fama No. 10 inscripta Unicode collatio algorithmus Online unicode.org. Renuntiatio multum continet technicae artis, ut breviter summatim summas notiones concedam.

collatio - "comparare" chordas est fundamentum cuiuslibet algorithmi voluptua. Ipsae algorithmi possunt differre ("bulla", "merge", "celeriter"), sed omnes comparatione chordarum utuntur ad determinandum ordinem in quo apparent.

Genus chordarum in lingua naturali satis implicata problema est. Etiam in simplicissimis byte edendis, ordo litterarum in alphabeto, etiam aliquo modo ab alphabeto latino Anglico diversus, non amplius congruit cum ordine valorum numerorum quibus hae litterae sunt encoded. Ita in Germanico alphabeto littera Ö stat inter О и Pet in modum translitterandi CP850 quae accipit inter ÿ и Ü.

Conemur abstrahere a quodam modo descriptam et considerare "ideale" epistolas aliquo ordine dispositas, sicut in Unicode fit. Encodings UTF8, UTF16 aut unus-byte KOI8-R (si copia Unicode stricta opus est) varias literarum numerorum repraesentationes dabit, sed ad eadem tabulae basin referenda.

Evenit ut, etiamsi a scabere mensam symboli aedificemus, non valeamus universale symbolum ordinem ei assignare. In diversis alphabetis nationalibus iisdem literis utentibus, ordo litterarum differet. Exempli gratia in French Æ ligatura considerabitur et quasi chorda fringilla AE. in Norvegica Æ erit littera separata, quae post sita est Z. Viam praeter ligaturas Æ Insunt epistolae aliquot symbolis scriptae. Ita in Bohemica littera est littera Chquae intercedit H и I.

Praeter differentias in alphabetis, aliae sunt traditiones nationales quae influentiae voluptua. Praesertim quaestio oritur: quo ordine debent verba constantia in dictionario autocineto et lowercase litteras apparere? Genus interpunctionis usu notis quoque affici potest. Hispanice, inversa nota interrogatio adhibetur initio sententiae interrogativae (Do vobis ut musica?). In hoc casu perspicuum est, sententias interrogativas non in racemum extra alphabetum dividi debere, sed quomodo lineas cum aliis interpunctionibus notas disponere?

Non immorabor chordas voluptua linguas ab Europaeis longe diversas. Nota quod in linguis cum manu dextra ad sinistram vel ad imum directum scribens, characteres in lineis maxime verisimile sunt in ordine legendi repositi, immo systemata scripturae non alphabetica suas habent vias ad mores ordinandi characterem. . Exempli causa, hieroglypha stylo disponi possunt (Seres characteres claves) Vel pronuntiatione. Honestum esse, nescio quomodo emojis disponantur, sed cum illis quoque aliquid ascendere potes.

Substructio in lineamentis supra recensitis, postulata fundamentalia ad chordas comparandas in tabulis unicodicis formantur:

  • comparatio chordarum non pendet a positione characterum in codice tabellae;
  • sequentiarum characterum unicam indolem ad formam canonicam reducuntur (A + Summitatem circuli idem est quod Å);
  • Cum chordis comparet, indoles in contextu chordae consideratur et, si opus sit, cum proximis in unam comparationem coniungatur (Ch in bohemica) vel in plures divisa (Æ in modo gallico);
  • omnes lineamenta nationalia (alphabetum, auto/lowercase, interpunctionem, ordinem scribendi genera) configurari debent usque ad ordinem manualem (emoji);
  • comparatio magni momenti est non solum in sortibus, sed etiam in multis aliis locis, exempli gratia ad iugis definiendis (substituendis {A... z} in vercundus);
  • satis celeriter fieri debet comparatio.

Praeterea relatio auctorum comparationis proprietatum formavit quae algorithmus tincidunt non niti debet:

  • comparatio algorithmus non debet singulas notas pro cuiusque linguae ordine requirere (linguae Russicae et Ucrainae maxime characteribus cyrillicis communicant);
  • comparatio non innitatur ordini characterum in tabulis Unicode;
  • pondus chordae non debet esse attributum chordae, cum idem chorda in variis contextibus culturalibus diversa pondera habere possit;
  • ordo weights potest mutare, cum bus vel fissile (a * x < y non sequitur xz < yz);
  • diversae chordae habentia pondera aequalia a parte algorithmi voluptua. Additamentum talis chordarum ordinatio possibilis est, sed potest in observantiam degradare;
  • Per repetita voluptua, ordines iisdem ponderibus swapped. Robur est proprietas algorithmi sorting specificae, et non proprietas chordae algorithmi comparationis (vide praecedens paragraph);
  • Voluptua praecepta super tempus mutare possunt sicut traditiones culturales excolant/mutantur.

Statutum est etiam quod comparatio algorithm nihil scit de semanticorum chordarum processu. Ita chordae digitorum tantum constantium comparari non debent cum numeris et in indice nominum Anglicorum articulum (Beatles, The).

Ut omnibus requisitis determinatis satisfaciat, proponitur tabula multi-grada (realiter quattuor graduum) algorithmus voluptua.

Antea characteribus chordarum ad formam canonicam rediguntur et in unitates comparationis iunguntur. Quaelibet unitas comparationis varia pondera pluribus gradibus comparationis respondentia assignatur. Pondera comparationis unitates sunt elementa copiarum ordinatarum (hoc in casu, integri) quae plus minusve comparari possunt. Specialis significatio neglectus (0x0) significat quod in gradu comparationis correspondente haec unitas in comparatione non implicatur. Comparatio chordarum aliquoties iterari potest, adhibitis ponderibus graduum respondentium. In unoquoque gradu, pondera comparationes duorum versuum gradatim inter se comparantur.

In variis exsecutionibus algorithmi pro diversis traditionibus nationalibus, valores coëfficientium differre possunt, sed norma Unicodea includit mensam fundamentalem ponderum - "Default Unicode Collation Element Table" (DUCET). Notare velim variabilis occasum LC_COLLATE actu indicato delectu ponderationis mensae in filo comparationis functionis.

pondus coefficientium DUCET ita disposita est;

  • in primo gradu, omnes litterae ad eundem casum rediguntur, diacriticae abiectae sunt, notae interpunctionis (non omnes) neglectae sunt;
  • in secundo gradu solum diacritici considerantur;
  • in tertio gradu, modo consideratur casus;
  • in quarto gradu, tantum interpunctionis notae ratio habenda est.

Pluribus transitibus fit comparatio: primo, coefficientes primi gradus comparantur; si pondera coincidunt, repetita comparatio cum secundo ponderibus exercetur; deinde fortasse tertia et quarta.

Finis comparatio cum ordines congruentes unitates comparationis cum diversis ponderibus continent. Ordines qui in omnibus quattuor gradibus pondera aequalia habent, inter se pares censentur.

Hoc algorithmus (cum fasciculo singularium technicorum additorum) nomen dedit ut nuntiaret No. 10 - "Unicode Collatio Algorithmi" (ACU).

Inde est, ubi de moribus nostris exemplisque dirimendis paulo clarior fit. Pulchrum esset eam comparare cum vexillo Unicode.

Ut test implementations ACU est specialis test, usura weights file, implementing DUCET. Omnia genera ridiculorum in squamis fasciculi invenire potes. Exempli gratia, ordo mahjong et dominorum Europaeorum est, et ordo causarum in navi chartarum (symbolum 1F000 et ulterius). Chartae lites ponuntur secundum regulas pontis - PCBT et chartae in lite in serie T, 2,3, XNUMX... K.

Manually reprehendo quod ordines ordinantur recte secundum DUCET admodum longum esset, sed, peropportune nobis, exemplar bibliothecae exsequendae unicodae operandi est.International Components pro Unicode"(ICU).

In pagina huius bibliothecae, in Encyclica IBM, paginae demo sunt, comprehendo linea collatio algorithmus pagina. Lineas temptantes cum occasus defectus intramus et, ecce, ecce, genus Russicum perfectum obtinemus.

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

Viam in pagina ICU Explicationem comparationis algorithmi cum notis interpunctionis expediendis invenire potes. In exemplis Collatio FAQ apostrophe et hyphen neglecta sunt.

Unicode adiuvit nos, sed causas exspectamus mores alienos genus в Linux erit in alium ire.

Genus in glibc

Velox intuitu utilitatis source codes genus ex GNU Caput Utils In ipsa utilitate ostendit localizationem descendere ad valorem currentem variabilis LC_COLLATE Cum currit in lusione;

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

Comparationes filo fiunt utendo ad munus vexillum strcoll, id est omne studium in bibliotheca glibc.

In minim veniam, project glibc dicata linea comparationis unum paragraphum. Ex hoc paragrapho intelligi potest quod in glibc genus fundatur in algorithm iam nota nobis ACU (Collatio Unicode algorithmus) Et / vel prope vexillum ad eam ISO 14651 (Internationalis filum ordinatio et comparatio). Circa vexillum novissimum notandum est quod in situ standards.iso.org ISO 14651 publice in promptu publice declaravit, sed nexus correspondens ad paginam non exsistentem ducit. Google complures paginas refert cum nexus ad situs officiales qui praebent exemplar electronicum emere pro centum nummis Europaeis, sed in tertia vel quarta pagina proventuum quaerendi etiam nexus directi sunt. PDF. Communiter, vexillum prorsus non differt a ACU, sed magis taedet legere quia non habet manifesta exempla linearum nationalium chordarum voluptua.

Maxime interesting notitia on minim veniam, erat vinculum bug tracker ad disputationem de exsequendo filum comparationis glibc. Ex discussione cognosci potest quod glibc comparare solebat chordis ISOpersonalis mensam Tabula Communia Formulae (CTT, oratio cuius in applicatione inveniri potest A vexillum ISO 14651. Inter 2000 et 2015 haec tabula in glibc assertorem non habuit et longe diversus fuit (saltem extrinsecus) a emendatione normae facta. Ab 2015 ad 2018 aptatio ad novam versionem Tabulae facta est, et nunc forte occurrit in vita reali novam versionem tabulae (CentOS 8) et vetus (CentOS 7).

Cum omnes informationes de algorithm et tabularum auxiliaribus habeamus, redire possumus ad problema originale et intelligere quomodo chordas recte exponamus in locali Russico.

14651 ISO / 14652

Fons codice tabellae nos interest CTT maxime in distributionibus Linux in catalogo /usr/share/i18n/locales/. Mensa ipsa in tabella est iso14651_t1_common. Inde est tabella directiva effingo iso14651_t1_common includitur in tabella iso14651_t1quae vicissim in tabulariis nationalibus comprehenditur en и ru_RU. De maxime distributionibus Linux omnia documenta fontalia in institutione fundamentali comprehenduntur, sed si non adsunt, sarcinam additam ex distributione instituere debebis.

File structure iso14651_t1 terribiliter verbosus videri potest, cum non-obvias regulas construendi nominum, at si spectes, omnia prorsus simplicia sunt. Structura in vexillo describitur ISO 14652cuius exemplum ex pagina detrahi potest open-std.org. Alia descriptionis formae tabellae legi potest in specifications POSIX ex OpenGroup. Ut jocus lectionis vexillum, codicem functionis studere potes collate_read в glibc/locale/programma/ld-collate.c.

Tabella structura similis est:

Defalta, character pro evasione ponitur, et finis lineae post # character commentarium est. Utrumque symbolum redintegrari potest, id quod fit in nova tabula versione:

escape_char /
comment_char %

Tabella signa in forma continebit aut (Ubi x — digiti hexadecimi). Haec est hexadecimalis repraesentatio Unicode puncta in translitterandi codice UCS-4 (Utf-32). Omnia alia elementa in angulo brackets (including , <2> et similia) considerantur chordae simplices constantes quae extra contextum sensum parum habent.

Linea LC_COLLATE chordarum comparationem describens, deinde incipit notitia.

Primo, nomina ponuntur pro ponderibus in collatione tabulae, et nomina pro signo complexionum. Fere duo genera nominum ad duas res pertinent, sed in ipso fasciculo mixta sunt. Nomina ponderum per keyword specificantur collatio-symbolum (praestatio characteris) quia cum comparet, characteribus Unicode, quae eadem pondera habent, characteribus aequipollentibus habebuntur.

Tota longitudo sectionis in emendatione fasciculi currentis est circiter 900 linearum. Exempla e pluribus locis posui, ut nominum arbitrium et syntaxin plura genera ostenderem.

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

  • collatio-symbolum taleae filum OSMANYA in mensa nomina squamae
  • collatio-symbolum . nomina sequentem nomina praeposita constantem S et hexadecimali numerorum que a * 1D000 ad 1D35F.
  • ffff в collatio-symbolum magnus unsigned integer hexadecimali similis, sed suus nomen ut viderem
  • имя significat codice punctum in modum translitterandi UCS-4
  • collativa-elementum ex " " novum nomen registra pro punctis unicoderum par.

Ponderibus definitis nomina, ipsa pondera specificantur. Cum relationes materiae respectu tantum maiores et minus, per simplicem seriem nominum enumerationem determinantur. Pondera primum enumerantur, deinde graviora. Admoneam me tibi characterem singularem Unicode quattuor diversis ponderibus assignari. Coniunguntur hic in unam seriem ordinatam. In theoria, quodlibet nomen symbolicum in quolibet quattuor graduum adhiberi potest, sed commentationes indicant nomina tincidunt mente separata in gradus.

% 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

Denique ipsum pondus mensae.

Ponderibus sectio inclusa est in lineae keyword order_start и order_end. Extra optiones order_start determinant utram partem ordine quovis ordine lustrantur. Quod default occasus est ante. Sectionis corpus lineis constat, quae in codice symboli ac quatuor eius pondera continent. Charactere codice repraesentari possunt charactere ipso, puncto signum, vel nomen symbolicum antea definitum. Pondera etiam nominibus symbolicis, punctis vel symbolis ipsis dari possunt. Si nota puncta vel notae in codice adhibentur, eorum pondus idem est ac valor numericus puncti (positio in tabula Unicode). Characteres non explicite definiti (sicut intelligo) censentur tabulae assignatae cum primo pondere, quod congruit positioni in tabula unicodica. Specialis pondus valorem DISSIMULO significat symbolum in convenienti comparationis gradu neglectum esse.

Squamarum structuram ad demonstrandam, tria fragmenta satis perspicua elegi;

  • notis omnino neglecta sunt
  • symbola numero tria in duobus primis gradibus
  • exordium alphabeti cyrillici, quod diacriticum non continet, ac propterea primo et tertio gradu maxime digestus est.

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

Nunc exempla ab initio articuli ad genus referre potes. Insidiae in hac parte iacent pondera mensae;

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

Interpunctionem notas in hac tabula videri potest ASCII (including space) fere semper neglecta est cum chordis comparet. Solae exceptiones sunt lineae quae in omnibus praeter notas interpunctiones congruentes positis aequant. Lineae ab exemplo meo (post sorting) ad algorithmum comparationis hoc modo spectant;

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

Considerans quod in tabula squamae capitales litterae in Russian veniant post lowercase litteras (tertio gradu" gravior ) Genus spectat absolute recte.

Cum variabilis profecta LC_COLLATE=C peculiari mensa oneratur quod dat speciem a byte-by-byte comparationis

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

Cum in Unicode punctum codicem praecedat A, chordae proinde accommodantur.

Textus et binae tabulae

Patet, chorda comparatio est operatio maxime communis, et mensa parsing CTT satis pretiose agitur. Ad mensam accessum optimize, in binariam formam cum mandato compilavit localdef.

bigas localdef acceptat ut parametri lima cum a mensa propriae patriae (optio -i), in quo omnes characteres unicode punctis repraesentantur, et fasciculus correspondentiae inter punctis et characteribus specifici modi translitterandi (optionem. -f). Ex operis binarii fasciculi creantur pro locali nomine designato in ultimo parametro.

glibc Duos formatos fasciculi binarii sustinet: "traditionale" et "modernum".

Forma traditum significat nomen loci esse nomen subdirectoriae in /usr/lib/locale/. Hoc subdirectory stores binarii files LC_COLLATE, LC_CTYPE, LC_TIME et sic porro. File LC_IDENTIFICATION continet formalem nomen loci (quod diversum sit ab indice nominis) et commenta.

Forma moderna involvit omnia localia in uno archivo recondens /usr/lib/locale/locale-archivequae ad virtualem omnium processuum memoriam provisa est glibc. Nomen loci in moderna forma aliquibus canonizationi obnoxium est - tantum numeri et litterae ad casus inferiores redacti manent in nominibus descriptae. Sic ru_RU.KOI8-R, salvus erit ut ru_RU.koi8r.

Inputatio imagini exploratur in directorio currenti, sicut et in directoriis /usr/share/i18n/locales/ и /usr/share/i18n/charmaps/ nam files CTT ac limam descriptam, respectively.

Exempli gratia, mandatum

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

ordinabit tabella /usr/share/i18n/locales/ru_RU per modum translitterandi file /usr/share/i18n/charmaps/MAC-CYRILLIC.gz et salvare effectus /usr/lib/locale/locale-archive sub nomine ru_RU.maccyrillic

Si profectus est variabilis Lang-8 en_US.UTF = quod glibc locales binarios in sequenti ordine files et directoriis exspectabo:

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

Si locus occurrit in formatis tam traditis quam modernis, tunc prioritas moderno datur.

Inspicere potes indicem locorum compilatum cum mandato locus -a.

Praeparans mensam comparationis tuae

Nunc, scientia armata, tuum specimen chordae comparationis mensam creare potes. Haec tabula recte comparare debet litteras russicas, littera , etiam litteras , ac simul notas interpunctionis secundum tabulam rationem habere. ASCII.

Processus praeparandi mensae tuae sorting duos gradus constat: mensa pondera emendare et eam in formam binariam cum mandato compone. localdef.

Ut ad mensam comparationis cum expensis minimis edendis accommodando, in forma ISO 14652 Sectiones ad componendas pondera mensae exsistentis praebentur. Sectio incipit cum keyword reorder, cum et indicans locum quo postea agitur. Sectio terminatur ad lineam reorder-finem. Si necesse est plures sectiones tabulae corrigere, pro qualibet tali sectione creatur sectio.

Exscripsi novas tabellas iso14651_t1_common и ru_RU ex eclesiae reposito glibc ad domum meam directorium ~/.local/share/i18n/locales/ et sectionem leviter edidit LC_COLLATE в ru_RU. Novae tabellariorum versiones plene compatiuntur cum mea versione glibc. Si tabulariorum versionibus antiquioribus uti voles, nomina symbolica mutare debebis et locum ubi subrogando incipit in tabula.

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

Etenim oporteret agros mutare LC_IDENTIFICATION ut demonstrant locale ru_MYsed in exemplo meo hoc non requirebatur, quia archivum ab inquisitione localium exclusivi locus-archive.

quod localdef laboravi cum files in folder per variabilis I18NPATH Additum directorium addere potes ad inputandas tabulas quaerendas, et directorium ad binarios fasciculos servandos ut semita cum virgulis specificari possunt:

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

POSIX Ponit in * Lang Potes semitas absolutas scribere ad directoria cum fasciculis localibus, incipiendo a VULNUS, sed glibc в Linux omnes viae a basi directorio computantur, quae per variabilem opprimi potest LOCPATH. Post institutionem LOCPATH=~/.local/lib/locale/ omnia documenta ad localizationem pertinentia solum in folder meo quaerebuntur. Archive localium cum incerto statuto LOCPATH neglecta.

Hic est test decretorium:

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

euge! Fecimus id!

Opus super bugs

Iam interrogationes de chordarum diribitatione ab initio propositas respondi, sed adhuc duae quaestiones de erroribus — visibiles et invisibiles sunt.

Ad problema originale revertamur.

Et programmata genus et programma join utere eadem munera collatio filum a glibc. Quomodo factum est? join dedit voluptua errorum ordines digestus mandatum genus in locale en_US.UTF-8? Responsum est simplex; genus totum chorda comparat, et join solum clavem comparat, quae per defectionem initium chordae usque ad characterem primum whitespace. In exemplo meo, hoc nuntius in errore evenit quod genus verborum in lineis primorum generum linearum integrarum non congruit.

Locale "C" spondet etiam in sortibus chordis initia substringi usque ad primum spatium digesta, sed hoc solum erroris personat. Fieri potest ut notitias eligere (homines iisdem cognominibus, sed prima nomina diversa) ut, sine nuntio erroris, eventum file falsam darent. Si vis join lineas fasciculi immiscentur pleno nomine, tunc recta via esset ut campum separatorem et quasi per clavem campum, non per totam lineam explicite exprimeret. In hoc casu recte procedet verba et errores in aliquo locali non erunt;

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

Feliciter supplicium exemplum in modum translitterandi CP1251 alium continet errorem. Ita est, in omnibus distributionibus mihi notis Linux packages are missing Composuit locale ru_RU.CP1251. Si locus compilatus non est inventus, tunc genus tacite utitur comparatione byte-byte, quae est id quod vidimus.

Obiter alia parva glitch ad locorum inaccessibilitatem compilata pertinentia. Team LOCPATH = / tmp locale -a erit index omnium locorum in locus-archive, sed cum paroe variabili LOCPATH omnibus programs (including maxime locus) hi loci praesto non erunt.

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

conclusio,

Si programmator es, qui soles esse chordas existimare chordarum statutos, deinde electionem tuam LC_COLLATE=C.

Si linguistica vel dictionarium compilator es, tunc melius in tuo locale compilare.

Si simplex usor es, tunc tantum opus est uti hoc quod praeceptum est ls -a outputs files incipiens cum puncto mixto files incipiens cum litteris, et dux mediaequi suis internis functionibus utens nominibus utens, fasciculos punctorio in initio ponit.

References

X Unicode collatio algorithmus

Ingenium pondera in unicode.org

ICU - Exsecutio bibliothecae ad operandum cum Unicode ex IBM.

Genus test uti ICU

Ingenium pondera in ISO 14651

Descriptio tabella forma squamis ISO 14652

Discussio chordae comparationis in glibc

Source: www.habr.com

Add a comment