ISO/IEC 14651:2020
(Main)Information technology - International string ordering and comparison - Method for comparing character strings and description of the common template tailorable ordering
Information technology - International string ordering and comparison - Method for comparing character strings and description of the common template tailorable ordering
This document defines the following. - A reference comparison method. This method is applicable to two character strings to determine their collating order in a sorted list. The method can be applied to strings containing characters from the full repertoire of ISO/IEC 10646. This method is also applicable to subsets of that repertoire, such as those of the different ISO/IEC 8-bit standard character sets, or any other character set, standardized or not, to produce ordering results valid (after tailoring) for a given set of languages for each script. This method uses collation tables derived either from the Common Template Table defined in this document or from one of its tailorings. This method provides a reference format. The format is described using the Backus-Naur Form (BNF). This format is used to describe the Common Template Table. The format is used normatively within this document. - A Common Template Table. A given tailoring of the Common Template Table is used by the reference comparison method. The Common Template Table describes an order for all characters encoded in the Unicode 13.0 standard,[27] included in ISO/IEC 10646:2020. It allows for a specification of a fully deterministic ordering. This table enables the specification of a string ordering adapted to local ordering rules, without requiring an implementer to have knowledge of all the different scripts already encoded in the Universal Coded Character Set (UCS). NOTE 1 This Common Template Table is to be modified to suit the needs of a local environment. The main worldwide benefit is that, for other scripts, often no modification is required and the order will remain as consistent as possible and predictable from an international point of view. NOTE 2 The character repertoire used in this document is equivalent to that of the Unicode Standard version 13.0[27]. - A reference name. The reference name refers to this particular version of the Common Template Table, for use as a reference when tailoring. In particular, this name implies that the table is linked to a particular stage of development of the ISO/IEC 10646 Universal coded character set. - Requirements for a declaration of the differences (delta) between the collation table and the Common Template Table. This document does not mandate the following. - A specific comparison method; any equivalent method giving the same results is acceptable. - A specific format for describing or tailoring tables in a given implementation. - Specific symbols to be used by implementations, except for the name of the Common Template Table. - Any specific user interface for choosing options. - Any specific internal format for intermediate keys used when comparing, nor for the table used. The use of numeric keys is not mandated either. - A context-dependent ordering. - Any particular preparation of character strings prior to comparison. NOTE 1 It is normally necessary to do preparation of character strings prior to comparison even if it is not prescribed by this document (see Annex C). NOTE 2 Annex D describes problems that gave way to this International Standard with their anticipated solutions.
Technologies de l'information — Classement international et comparaison de chaînes de caractères — Méthode de comparaison de chaînes de caractères et description du modèle commun et adaptable d'ordre de classement
Le présent document définit ce qui suit. — Une méthode de référence pour la comparaison de deux chaînes de caractères ayant pour but de déterminer leur ordre de classement dans une liste triée. La méthode s'applique à des chaînes utilisant le répertoire complet de l'ISO/IEC 10646, des sous-répertoires tels que ceux des divers jeux normalisés ISO/IEC à 8 bits ou tout autre jeu de caractères, normalisé ou non, et permet de produire des résultats de tri valables (après adaptation) pour un ensemble de langues de chaque système d'écriture. Cette méthode de référence utilise des tables de tri dérivées soit de la table-modèle commune de classement définie dans le présent document, soit d'une de ses adaptations. La méthode procure un format de référence de la table-modèle commune. Ce format est décrit en notation BNF (forme de Backus-Naur, Backus-Naur Form). Son emploi est normatif dans le présent document. — Une table-modèle commune de classement utilisée par la méthode de référence. Cette table décrit un ordre de base pour tous les caractères du standard Unicode 13.027 compris dans l'ISO/IEC 10646:2020. Tout cela permet de spécifier un ordre complètement déterministe. Cette table constitue le point de départ permettant de préciser un ordre de classement adapté aux règles de classement locales, sans qu'il soit nécessaire de connaître tous les systèmes d'écriture repris dans le jeu universel de caractères codés (JUC). NOTE 1 Cette table-modèle commune de classement est destinée à être modifiée pour satisfaire aux besoins d'environnements locaux. L'avantage principal de cette pratique, sur le plan mondial, réside dans le fait que, pour d'autres systèmes d'écriture que celui de l'utilisateur, aucune modification n'est nécessaire et cet ordre demeurera aussi cohérent que possible et prévisible dans un contexte international. NOTE 2 Le répertoire de caractères utilisé dans le présent document est équivalent à celui du standard Unicode, version 13.0[27]. — Un nom de référence représentant cette version particulière de la table-modèle commune, à utiliser comme point de départ à toute adaptation. Ce nom implique notamment que la table est liée à un stade de développement particulier du jeu universel de caractères codés (ISO/IEC 10646). — Des exigences pour la déclaration de différences (delta) entre une table de tri et la table-modèle commune. Le présent document ne spécifie pas ce qui suit. — Une méthode particulière de comparaison; toute méthode équivalente conduisant aux mêmes résultats est acceptable. — Un format précis pour décrire ou pour adapter les tables dans une mise en œuvre donnée. — Des symboles précis à utiliser par les mises en œuvre, sauf pour ce qui est du nom de la table-modèle commune de classement. — Une interface utilisateur particulière destinée à choisir les options. — Un format interne particulier pour les clés intermédiaires utilisées dans les comparaisons ou pour la table de tri. L'utilisation de clés numériques n'est pas spécifiée non plus. — Un ordre dépendant du contexte. — Un prétraitement particulier des chaînes de caractères avant comparaison. NOTE 1 Bien que ceci ne soit pas spécifié par le présent document, il s'avère souvent nécessaire de préparer les chaînes de caractères avant leur comparaison (cf. l'Annexe C). NOTE 2 L'Annexe D décrit les problèmes qui ont donné lieu à la présente Norme internationale avec leurs solutions anticipées.
General Information
- Status
- Published
- Publication Date
- 20-Dec-2020
- Technical Committee
- ISO/IEC JTC 1/SC 2 - Coded character sets
- Drafting Committee
- ISO/IEC JTC 1/SC 2 - Coded character sets
- Current Stage
- 9599 - Withdrawal of International Standard
- Start Date
- 22-Jul-2025
- Completion Date
- 30-Oct-2025
Relations
- Effective Date
- 01-Jul-2023
- Effective Date
- 23-Apr-2020
Overview
ISO/IEC 14651:2020 - "Information technology - International string ordering and comparison" - specifies a reference method for comparing character strings and defines a Common Template Table that can be tailored for local collation needs. The standard applies to strings containing characters from the full repertoire of ISO/IEC 10646 (equivalent to Unicode 13.0) and provides a normative format (described in Backus‑Naur Form, BNF) for collation tables and their tailorings.
Key technical topics and requirements
- Reference comparison method: A method to determine collating order for two strings; implementations may use any equivalent method that produces identical results.
- Common Template Table: A deterministic baseline ordering for all Unicode 13.0 characters that implementers can tailor to local languages and scripts.
- Tailoring and deltas: Differences between a local collation table and the Common Template Table must be declared as a delta; this supports predictable cross‑locale behavior.
- BNF format: The document defines a normative format (BNF) to describe the Common Template Table and its tailorings.
- Conformance requirements: A conformant process must produce results identical to the reference method and declare:
- the number of collation levels supported (minimum three);
- support for forward/backward processing parameters;
- the tailoring delta and number of levels in it;
- any preparation method used for input strings.
- Non‑mandated aspects: ISO/IEC 14651 does not require a specific internal key format, UI, context‑dependent ordering, or particular string preparation method (though preparation is normally necessary - see Annex C).
- Scope coverage: Applicable to full Unicode repertoire and to subsets or other character sets mapped to ISO/IEC 10646.
Practical applications and users
Who benefits:
- Software internationalization (i18n) engineers implementing locale‑aware sorting and searching
- Database and search engine developers needing consistent collation across scripts
- Standards bodies and vendors creating localized collation tables
- Libraries and toolkits (programming languages, OSs) that provide sort/collation APIs
Typical uses:
- Implementing deterministic, language‑aware sorting of names, dictionaries, indexes
- Creating and publishing tailored collation tables (deltas) for national/local standards
- Ensuring interoperability where consistent ordering across scripts and systems is required
Related standards
- ISO/IEC 10646:2020 (Universal Coded Character Set - UCS) / Unicode 13.0 - character repertoire referenced by ISO/IEC 14651
- ISO/IEC TR 30112 - informative guidance on ordering keywords that complement 14651
Keywords: ISO/IEC 14651, string ordering, collation, Common Template Table, Unicode 13.0, ISO/IEC 10646, tailoring, delta, BNF, internationalization, locale‑aware sorting.
ISO/IEC 14651:2020 - Information technology — International string ordering and comparison — Method for comparing character strings and description of the common template tailorable ordering Released:12/21/2020
ISO/IEC 14651:2020 - Technologies de l'information — Classement international et comparaison de chaînes de caractères — Méthode de comparaison de chaînes de caractères et description du modèle commun et adaptable d'ordre de classement Released:12/21/2020
Frequently Asked Questions
ISO/IEC 14651:2020 is a standard published by the International Organization for Standardization (ISO). Its full title is "Information technology - International string ordering and comparison - Method for comparing character strings and description of the common template tailorable ordering". This standard covers: This document defines the following. - A reference comparison method. This method is applicable to two character strings to determine their collating order in a sorted list. The method can be applied to strings containing characters from the full repertoire of ISO/IEC 10646. This method is also applicable to subsets of that repertoire, such as those of the different ISO/IEC 8-bit standard character sets, or any other character set, standardized or not, to produce ordering results valid (after tailoring) for a given set of languages for each script. This method uses collation tables derived either from the Common Template Table defined in this document or from one of its tailorings. This method provides a reference format. The format is described using the Backus-Naur Form (BNF). This format is used to describe the Common Template Table. The format is used normatively within this document. - A Common Template Table. A given tailoring of the Common Template Table is used by the reference comparison method. The Common Template Table describes an order for all characters encoded in the Unicode 13.0 standard,[27] included in ISO/IEC 10646:2020. It allows for a specification of a fully deterministic ordering. This table enables the specification of a string ordering adapted to local ordering rules, without requiring an implementer to have knowledge of all the different scripts already encoded in the Universal Coded Character Set (UCS). NOTE 1 This Common Template Table is to be modified to suit the needs of a local environment. The main worldwide benefit is that, for other scripts, often no modification is required and the order will remain as consistent as possible and predictable from an international point of view. NOTE 2 The character repertoire used in this document is equivalent to that of the Unicode Standard version 13.0[27]. - A reference name. The reference name refers to this particular version of the Common Template Table, for use as a reference when tailoring. In particular, this name implies that the table is linked to a particular stage of development of the ISO/IEC 10646 Universal coded character set. - Requirements for a declaration of the differences (delta) between the collation table and the Common Template Table. This document does not mandate the following. - A specific comparison method; any equivalent method giving the same results is acceptable. - A specific format for describing or tailoring tables in a given implementation. - Specific symbols to be used by implementations, except for the name of the Common Template Table. - Any specific user interface for choosing options. - Any specific internal format for intermediate keys used when comparing, nor for the table used. The use of numeric keys is not mandated either. - A context-dependent ordering. - Any particular preparation of character strings prior to comparison. NOTE 1 It is normally necessary to do preparation of character strings prior to comparison even if it is not prescribed by this document (see Annex C). NOTE 2 Annex D describes problems that gave way to this International Standard with their anticipated solutions.
This document defines the following. - A reference comparison method. This method is applicable to two character strings to determine their collating order in a sorted list. The method can be applied to strings containing characters from the full repertoire of ISO/IEC 10646. This method is also applicable to subsets of that repertoire, such as those of the different ISO/IEC 8-bit standard character sets, or any other character set, standardized or not, to produce ordering results valid (after tailoring) for a given set of languages for each script. This method uses collation tables derived either from the Common Template Table defined in this document or from one of its tailorings. This method provides a reference format. The format is described using the Backus-Naur Form (BNF). This format is used to describe the Common Template Table. The format is used normatively within this document. - A Common Template Table. A given tailoring of the Common Template Table is used by the reference comparison method. The Common Template Table describes an order for all characters encoded in the Unicode 13.0 standard,[27] included in ISO/IEC 10646:2020. It allows for a specification of a fully deterministic ordering. This table enables the specification of a string ordering adapted to local ordering rules, without requiring an implementer to have knowledge of all the different scripts already encoded in the Universal Coded Character Set (UCS). NOTE 1 This Common Template Table is to be modified to suit the needs of a local environment. The main worldwide benefit is that, for other scripts, often no modification is required and the order will remain as consistent as possible and predictable from an international point of view. NOTE 2 The character repertoire used in this document is equivalent to that of the Unicode Standard version 13.0[27]. - A reference name. The reference name refers to this particular version of the Common Template Table, for use as a reference when tailoring. In particular, this name implies that the table is linked to a particular stage of development of the ISO/IEC 10646 Universal coded character set. - Requirements for a declaration of the differences (delta) between the collation table and the Common Template Table. This document does not mandate the following. - A specific comparison method; any equivalent method giving the same results is acceptable. - A specific format for describing or tailoring tables in a given implementation. - Specific symbols to be used by implementations, except for the name of the Common Template Table. - Any specific user interface for choosing options. - Any specific internal format for intermediate keys used when comparing, nor for the table used. The use of numeric keys is not mandated either. - A context-dependent ordering. - Any particular preparation of character strings prior to comparison. NOTE 1 It is normally necessary to do preparation of character strings prior to comparison even if it is not prescribed by this document (see Annex C). NOTE 2 Annex D describes problems that gave way to this International Standard with their anticipated solutions.
ISO/IEC 14651:2020 is classified under the following ICS (International Classification for Standards) categories: 35.040.10 - Coding of character sets. The ICS classification helps identify the subject area and facilitates finding related standards.
ISO/IEC 14651:2020 has the following relationships with other standards: It is inter standard links to ISO/IEC 14651:2025, ISO/IEC 14651:2019. Understanding these relationships helps ensure you are using the most current and applicable version of the standard.
You can purchase ISO/IEC 14651:2020 directly from iTeh Standards. The document is available in PDF format and is delivered instantly after payment. Add the standard to your cart and complete the secure checkout process. iTeh Standards is an authorized distributor of ISO standards.
Standards Content (Sample)
INTERNATIONAL ISO/IEC
STANDARD 14651
Sixth edition
2020-12
Information technology —
International string ordering and
comparison — Method for comparing
character strings and description
of the common template tailorable
ordering
Technologies de l'information — Classement international et
comparaison de chaînes de caractères — Méthode de comparaison de
chaînes de caractères et description du modèle commun et adaptable
d'ordre de classement
Reference number
©
ISO/IEC 2020
© ISO/IEC 2020
All rights reserved. Unless otherwise specified, or required in the context of its implementation, no part of this publication may
be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting
on the internet or an intranet, without prior written permission. Permission can be requested from either ISO at the address
below or ISO’s member body in the country of the requester.
ISO copyright office
CP 401 • Ch. de Blandonnet 8
CH-1214 Vernier, Geneva
Phone: +41 22 749 01 11
Email: copyright@iso.org
Website: www.iso.org
Published in Switzerland
ii © ISO/IEC 2020 – All rights reserved
Contents Page
Foreword .iv
Introduction .v
1 Scope . 1
2 Normative references . 2
3 Terms and definitions . 2
4 Symbols and conventions . 3
5 Conformance . 3
6 String comparison . 4
6.1 Preparation of character strings prior to comparison . 4
6.2 Key building and comparison. 5
6.2.1 Preliminary considerations . 5
6.2.2 Reference ordering key formation . . 6
6.2.3 Reference comparison method for ordering character strings . 8
6.2.4 Key ordering definition . 9
6.3 Common Template Table: Formation and interpretation .10
6.3.1 General.10
6.3.2 BNF syntax rules for the Common Template Table in Annex A .10
6.3.3 Well-formedness conditions .12
6.3.4 Interpretation of tailored tables .13
6.3.5 Evaluation of weight tables .15
6.3.6 Conditions for considering specific table equivalences .15
6.3.7 Conditions for results to be considered equivalent .15
6.4 Declaration of a delta .15
6.5 Name of the Common Template Table and name declaration .17
Annex A (normative) Common Template Table .18
Annex B (informative) Example tailoring deltas .20
Annex C (informative) Preparation .29
Annex D (informative) Tutorial on solutions brought by this document to problems of
lexical ordering .45
Annex E (informative) Searching and fuzzy matches .49
Bibliography .51
© ISO/IEC 2020 – All rights reserved iii
Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that
are members of ISO or IEC participate in the development of International Standards through
technical committees established by the respective organization to deal with particular fields of
technical activity. ISO and IEC technical committees collaborate in fields of mutual interest. Other
international organizations, governmental and non-governmental, in liaison with ISO and IEC, also
take part in the work.
The procedures used to develop this document and those intended for its further maintenance are
described in the ISO/IEC Directives, Part 1. In particular, the different approval criteria needed for
the different types of document should be noted. This document was drafted in accordance with the
editorial rules of the ISO/IEC Directives, Part 2 (see www .iso .org/ directives).
Attention is drawn to the possibility that some of the elements of this document may be the subject
of patent rights. ISO and IEC shall not be held responsible for identifying any or all such patent
rights. Details of any patent rights identified during the development of the document will be in the
Introduction and/or on the ISO list of patent declarations received (see www .iso .org/ patents) or the IEC
list of patent declarations received (see patents.iec.ch).
Any trade name used in this document is information given for the convenience of users and does not
constitute an endorsement.
For an explanation of the voluntary nature of standards, the meaning of ISO specific terms and
expressions related to conformity assessment, as well as information about ISO's adherence to the
World Trade Organization (WTO) principles in the Technical Barriers to Trade (TBT), see www .iso .org/
iso/ foreword .html.
This document was prepared by Technical Committee ISO/IEC JTC 1, Information technology,
Subcommittee SC 2, Coded character sets.
This sixth edition cancels and replaces the fifth edition (ISO/IEC 14651:2019), which has been
technically revised.
The main changes compared to the previous edition are as follows:
— ordering data has been added for the new characters standardized in the sixth edition of
ISO/IEC 10646 (2020);
— the content of 6.2.2 has been revised for more completeness;
— the weights of character U+A9B5 (JAVANESE VOWEL SIGN TOLONG) have been changed, as the
latter is considered a variant of character U+A9B4 (JAVANESE VOWEL SIGN TARUNG). This needed
to be fixed.
Any feedback or questions on this document should be directed to the user’s national standards body. A
complete listing of these bodies can be found at www .iso .org/ members .html.
iv © ISO/IEC 2020 – All rights reserved
Introduction
This document provides a method, applicable around the world, for ordering text data, and provides
a Common Template Table which, when tailored, can meet a given language’s ordering requirements
while retaining reasonable ordering for other scripts.
The Common Template Table requires some tailoring in different local environments. Conformance to
this document requires that all deviations from the template, called “deltas”, be declared to document
resultant discrepancies.
This document describes a method to order text data independently of context.
ISO/IEC TR 30112 has specifications for ordering that informatively complement the specifications in
this document and indicates where additional information can be sought on ordering keywords defined
in this document.
© ISO/IEC 2020 – All rights reserved v
INTERNATIONAL STANDARD ISO/IEC 14651:2020(E)
Information technology — International string ordering
and comparison — Method for comparing character
strings and description of the common template tailorable
ordering
1 Scope
This document defines the following.
— A reference comparison method. This method is applicable to two character strings to determine
their collating order in a sorted list. The method can be applied to strings containing characters from
the full repertoire of ISO/IEC 10646. This method is also applicable to subsets of that repertoire,
such as those of the different ISO/IEC 8-bit standard character sets, or any other character set,
standardized or not, to produce ordering results valid (after tailoring) for a given set of languages
for each script. This method uses collation tables derived either from the Common Template Table
defined in this document or from one of its tailorings. This method provides a reference format. The
format is described using the Backus-Naur Form (BNF). This format is used to describe the Common
Template Table. The format is used normatively within this document.
— A Common Template Table. A given tailoring of the Common Template Table is used by the reference
comparison method. The Common Template Table describes an order for all characters encoded
[27]
in the Unicode 13.0 standard, included in ISO/IEC 10646:2020. It allows for a specification of
a fully deterministic ordering. This table enables the specification of a string ordering adapted to
local ordering rules, without requiring an implementer to have knowledge of all the different scripts
already encoded in the Universal Coded Character Set (UCS).
NOTE 1 This Common Template Table is to be modified to suit the needs of a local environment. The main
worldwide benefit is that, for other scripts, often no modification is required and the order will remain as
consistent as possible and predictable from an international point of view.
NOTE 2 The character repertoire used in this document is equivalent to that of the Unicode Standard
[27]
version 13.0 .
— A reference name. The reference name refers to this particular version of the Common Template
Table, for use as a reference when tailoring. In particular, this name implies that the table is linked
to a particular stage of development of the ISO/IEC 10646 Universal coded character set.
— Requirements for a declaration of the differences (delta) between the collation table and the Common
Template Table.
This document does not mandate the following.
— A specific comparison method; any equivalent method giving the same results is acceptable.
— A specific format for describing or tailoring tables in a given implementation.
— Specific symbols to be used by implementations, except for the name of the Common Template Table.
— Any specific user interface for choosing options.
— Any specific internal format for intermediate keys used when comparing, nor for the table used. The
use of numeric keys is not mandated either.
— A context-dependent ordering.
— Any particular preparation of character strings prior to comparison.
© ISO/IEC 2020 – All rights reserved 1
NOTE 1 It is normally necessary to do preparation of character strings prior to comparison even if it is not
prescribed by this document (see Annex C).
NOTE 2 Annex D describes problems that gave way to this International Standard with their anticipated
solutions.
2 Normative references
The following documents are referred to in the text in such a way that some or all of their content
constitutes requirements of this document. For dated references, only the edition cited applies. For
undated references, the latest edition of the referenced document (including any amendments) applies.
ISO/IEC 10646:2020, Information technology — Universal Coded Character Set (UCS)
3 Terms and definitions
For the purposes of this document, the following terms and definitions apply.
ISO and IEC maintain terminological databases for use in standardization at the following addresses:
— IEC Electropedia: available at http:// www .electropedia .org/
— ISO Online browsing platform: available at https:// www .iso .org/ obp
3.1
character string
sequence of characters considered as a single object
Note 1 to entry: Note to entry: A character string to be ordered does not normally include the characters that
delimit it, as for example an “end of line” control character in a text file to be sorted.
3.2
collating symbol
symbol (3.12) used to specify weights assigned to a collating element (3.4)
3.3
collation table
weighting table
mapping from collating elements (3.4) to weighting elements (3.14)
3.4
collating element
sequence of one or more characters that are considered a single entity for ordering (3.7)
3.5
delta
list of the differences between a given collation table (3.3) and another one
Note 1 to entry: The given collation table, together with a given delta, forms a new collation table.
Note 2 to entry: Unless otherwise specified in this document, the term “delta” always refers to differences from
the Common Template Table as defined in this document.
3.6
level
collation level
sequence number for a subkey (3.11) in the series of subkeys forming a key
2 © ISO/IEC 2020 – All rights reserved
3.7
ordering
collation
process by which, given two strings, it is determined whether the first one is less than, equal to, or
greater than the second one
3.8
ordering key
sequence of subkeys (3.11) used to determine an order
3.9
preparation
collation preparation
process in which given character strings (3.1) are mapped to (other) character strings before the
calculation of the ordering key (3.8) for each of the strings
3.10
reference comparison method
method for establishing an order between two ordering keys (3.8)
Note 1 to entry: See Clause 6.
3.11
subkey
sequence of weights computed for a character string (3.1)
3.12
symbol
collating element (3.4)
3.13
weight
collation weight
positive integer value, used in subkeys (3.11), reflecting the relative order of collating elements (3.4)
3.14
weighting element
list of a given number of weights sequentially ordered by level
4 Symbols and conventions
Following ISO/IEC 10646, characters are referenced as UX where X stands for a series of one to eight
hexadecimal digits (where all the letters in the hexadecimal string are in upper case) and refers to the
value of that character in ISO/IEC 10646. This convention is used throughout this document.
In the Common Template Table, arbitrary symbols representing weights are used according to the BNF
notation description in 6.3.1.
5 Conformance
A process is conformant to this document if it produces results identical to those that result from the
application of the specifications given in 6.2 to 6.5.
A declaration of conformity to this document shall be accompanied by a statement, either directly or by
reference, of the following:
— the number of levels that the process supports; this number shall be at least three;
— whether the process supports the forward position processing parameter;
© ISO/IEC 2020 – All rights reserved 3
— whether the process supports the backward processing parameter and at which level;
— the tailoring delta described in 6.4 and how many levels are defined in the delta;
— if a preparation process is used, the method used shall be declared.
It is the responsibility of implementers to show how their delta declaration is related to the table syntax
described in 6.3, and how the comparison method they use, if different from the one mentioned in
Clause 6, can be considered as giving the same results as those prescribed by the method specified in
Clause 6. The use of a preparation process is optional and its details are not specified in this document.
It is strongly recommended that processes present available tailoring options to users.
6 String comparison
6.1 Preparation of character strings prior to comparison
It can be necessary to transform character strings before the reference comparison method is applied
to them. Although not part of the Scope of this document, preparation can be an important part of the
ordering process. See Annex C for some examples of preparation.
Characters of the input string shall be encoded according to ISO/IEC 10646 (UCS) or a mapping to
ISO/IEC 10646 shall be provided if another encoding scheme is used.
Therefore it can be an important part of the preparation phase to map characters from a non-UCS
encoding scheme to the UCS for input to the comparison method. This task can, amongst other things,
encompass the correct handling of escape sequences in the originating encoding scheme, the mapping
of characters without an allocated UCS codepoint to an application-defined codepoint in the private
zone area and change the sequence of characters in strings that are not stored in logical order. For
example, for visual order Arabic code sets, input strings shall be put into logical order; and for some
bibliographic code sets, strings with combining accents stored before their respective base character
require that the combining accents be put after their base character. The resulting string sequence may
then have to be remapped into its original encoding scheme.
The Common Template Table is designed so that combining sequences and corresponding single
characters (precomposed) will have precisely the same ordering. To avoid inadvertently breaking
this invariant (and in the process breaking Unicode conformance), tailoring should reorder combining
sequences when corresponding precomposed characters are reordered. For example, if Ä is reordered
after Z, then the sequence + should also be reordered. To avoid exposing
encoding differences that can be invisible to the end-user, it is recommended that strings be normalized
[29]
according to Unicode normalization form NFD to achieve this equivalence (see ).
Escape sequences and control characters constitute very sensitive data to interpret, and it is highly
recommended that preparation should filter out or transform these sequences.
NOTE Since the reference method is a logical statement for the mechanism for string comparison, it does not
preclude an implementation from using a non-UCS character encoding only, as long as it produces results as if it
were using the reference comparison method.
4 © ISO/IEC 2020 – All rights reserved
6.2 Key building and comparison
6.2.1 Preliminary considerations
6.2.1.1 Assumptions
The collation table is a mapping from collating elements to weighting elements. In each weighting
element, four levels are described in the Common Template Table. This number of levels can be extended
or reduced, but cannot be less than 3, in tailoring.
NOTE In the Common Template Table, levels generally have the following characteristics, although this
purpose is not absolute.
Level 1: This level generally corresponds to the set of common letters of the alphabets for that script, if the script
is alphabetic, and to the set of common characters of the script if the script is ideographic or syllabic.
Level 2: This level generally corresponds to diacritical marks affecting each basic character of the script. For
some languages, letters with diacritics are always considered an integral part of the basic letters of the alphabet
and are not considered at this second level, but rather at the first. For example, in Spanish, N TILDE is considered
a basic letter of the Latin script. Therefore, tailoring for Spanish will change the definition of N TILDE from "the
weight of an N in the first level and the weight of a TILDE in the second level" to "the weight of an N TILDE (placed
after N and before O) in the first level, and indication of the absence of a diacritic in the second level". For some
characters, variant letter shapes are also dealt with on level 2. An example of this is ß, the LATIN SMALL LETTER
SHARP S, which is treated as equivalent to ss on level 1, but traditionally distinguished from it on level 2.
Level 3: This level generally corresponds to case distinctions (upper and lower case) or to distinctions based on
variant letter shapes (like the distinction between Hiragana and Katakana).
Level 4: This level generally corresponds to weighting differences that are less significant than those at the other
levels. Often the last level (level 4 in the Common Template Table) is intended to specify additional weighting for
"special" characters, i.e. characters normally not part of the spelling of words of a language (such as dingbats,
punctuation, etc.), sometimes called "ignorable" characters in the context of computerized ordering.
6.2.1.2 Processing properties
A given tailored table has specific scanning and ordering properties. These properties can have been
changed by the tailoring.
A scanning direction (forward or backward) for each level is used to indicate how to process the string.
The scanning direction is a global property of each level defined in the tailored table.
If the last level is greater than three, there is an optional property of this level of comparison called
“position” option: when active, a comparison on the numeric position of each “ignorable” character in
the two strings is effected, before comparing their weights. In other words, for two strings equivalent
at all levels except the last one, the string having an ignorable character in the lowest position comes
before the other one. In case corresponding ignorable characters are at the same position, then their
weights are considered, until a difference is found. Support for this kind of processing is optional and is
not necessary to claim conformance to this document.
NOTE The scanning direction (forward or backward) is not normally related to the natural writing direction
of scripts. The scanning direction applies to the logical sequence of the coded character string.
According to ISO/IEC 10646, for scripts written right to left, such as Arabic, the first characters in
the logical sequence correspond to the rightmost characters in their natural presentation sequence.
Conversely, for the Latin script, written left to right, the first characters in the logical sequence
correspond to the leftmost characters in their natural presentation sequence.
Scanning forward starts with the lowest position in the logical sequence, while scanning backward
starts from the highest position, independently of the presentation sequence. The scanning direction
for ordering purposes is a global property of each level described in the table.
© ISO/IEC 2020 – All rights reserved 5
In ISO/IEC 10646, the Arabic script is artificially separated into two pseudo-scripts: 1) the logical,
intrinsic Arabic, coded independently of contextual shapes, and 2) the Arabic presentation forms.
Both allow the complete coding of Arabic, but intrinsic Arabic is normally preferred for better
processing, while presentation-form Arabic is preferred by some presentation-oriented applications.
ISO/IEC 10646 does not prescribe that the presentation forms be stored in any specific order, and
in some implementations, the storage order for the latter is the reverse of the storage order used for
intrinsic Arabic. It is therefore advisable that the preparation phase be used to make sure that Arabic
presentation forms and other Arabic characters be fed to the comparison method in logical order.
A tailored sort table can be separated into sections for ease of tailoring. Each section is then assigned
a name consistent with the specification in 6.3.1. One of the tailoring possibilities is to assign a given
order to each section and to change the relative order of an entire section relative to other sections.
6.2.2 Reference ordering key formation
6.2.2.1 General
When two strings are to be compared to determine their relative order, the two strings are first parsed
into a sequence of collating elements taking into account the multi-character “collating-element”
statements declared and used in a tailored table (if the syntax of 6.3.2 is used). For the syntax used for
expressing the Common Template Table, the name of a collating element consisting of a single character,
is formed by the UCS value of the character, expressed as a hexadecimal string, prefixed with “U”.
For multi-character collating elements, the name and association to characters can be found via the
collating elements declarations.
NOTE Collating elements with more characters have preference over shorter ones. As an example, if a
multicharacter collating element is defined for “abc” and another one is defined for “ab” or for “bc”, then if “abc” is
encountered, the collating element for “abc” will apply and not the one for “ab” or “bc”.
Then, a sequence of m intermediary subkeys is formed out of a character string, where m is the number
of levels described in a tailored collation weighting table.
Each ordering key is a sequence of subkeys. Each subkey is a list of numeric weights. A subkey is formed
by successively appending the list of the weights assigned, at the level of the subkey, to each collating
element of the string. The keyword “IGNORE” in the Common Template Table at the place of a sequence
of collating symbols at a level indicates that the sequence of weights at that level for that collating
element is an empty sequence of weights.
6.2.2.2 Weighting elements to be ignored
When forming a sort key, collating elements ignored at the first level or at the two first levels and that
follow a collation element ignored at all levels but the last one, do not keep their weights as defined in
the common template table (or a tailored table); each of these weights shall be zeroed (this means that
“IGNORE” shall be assigned to each non-nil weight).
6.2.2.3 Implicit weights computing
If there is no entry in the tailored table for a character of the input string, then the character’s weights
are undefined. In this case, one shall compute an “implicit” primary weight consisting of a pair of 16-
bit words — call them “aaaa” and “bbbb” — and assume that lines like the following were added to the
weighting table:
"";;;
16 16
NOTE (at the last level) is the largest level 1 weight in the Common Template Table.
6 © ISO/IEC 2020 – All rights reserved
Distinctions are needed among characters with no entry in the weighting table, and implicit primary
weights are thus computed as defined here:
a) Unified Han ideographs:
For a given Han character at code point cp:
base_weight = 0xFB40 for original URO
base_weight = 0xFB80 for Extension A through Extension G Han characters
aaaa = [base_weight + (cp >> 15)]
bbbb = [(cp & 0x7FFF) | 0x8000]
b) Tangut ideographic and component characters:
For a given Tangut character at code point cp:
base_weight = 0xFB00
aaaa = [base_weight]
bbbb = [(cp - 0x17000) | 0x8000]
c) Nüshu ideographic characters:
For a given Nüshu character at code point cp:
base_weight = 0xFB01
aaaa = [base_weight]
bbbb = [(cp - 0x1B170) | 0x8000]
d) Khitan small script ideographic characters:
For a given Khitan small script character at code point cp:
base_weight = 0xFB02
aaaa = [base_weight]
bbbb = [(cp - 0x18B00) | 0x8000]
e) Any other code point not mentioned in the table (non-characters, surrogates, and any characters
that are not assigned in the current repertoire):
For a given character at code point cp:
base_weight = 0xFBC0
aaaa = [base_weight + (cp >> 15)]
bbbb = [(cp & 0x7FFF) | 0x8000]
Thus, the value of the code point is used to calculate the desired weights, by operating on individual
bits. The two numbers, converted to four-character hexadecimal values, will then take the following
form: "".
Decomposable characters are excluded from these computings, as they have an entry in the Common
Template Table (with dual primary weights).
© ISO/IEC 2020 – All rights reserved 7
If a string contains ill-formed code unit sequences, two approaches show up: the sequence can be
handled as if it were U+FFFD (REPLACEMENT CHARACTER), or each subsequence can be ignored. The
same approaches can be adopted for any out-of-range values (cp > 10FFFF ).
NOTE 1 Areas in which Han, Tangut, Nüshu and Khitan small script characters are found are defined in the
comment lines added to the end of the Common Template Table.
NOTE 2 When computed weights are used, characters without explicit mappings are sorted in code point
order within each set they belong to (Han, Tangut, Nüshu, Khitan small script, others) and they sort properly
with respect to the rest of the characters.
6.2.2.4 Subkeys formation
There are three ways of forming subkeys: subkeys formed using the “forward” processing parameter,
subkeys formed using the “backward” processing parameter, and subkeys formed using the
“forward,position” processing parameter. Subkeys that use the “position” option can only occur at the
last level, and only if that level is greater than three. Support of the “position” option is not required for
conformance. If the processing parameter “forward,position” is not supported, “forward,position” shall
be interpreted as if the processing parameter had been “forward”.
6.2.2.5 Formation of subkeys for the first three levels
With the “forward” or “forward,position” processing parameter, during (forward) scanning of each
collating element of the input character string, one or more weights are obtained. These weights are
obtained by matching the collating element in the given tailored collation weighting table, obtaining
the list of weights assigned to the collating element at the particular level. The obtained weight list is
appended to the end of the subkey.
Subkeys, at a particular level, formed with the “backward” level processing parameter are built by
forming a subkey as with the “forward” parameter, then reversing that subkey weight by weight.
6.2.2.6 Formation of the level 4 subkey
At the last level, the subkey is built as described in the preceding paragraph. However, once the ordering
key is completely formed (when the end of the string is reached), there are two possible approaches:
a) With the “forward” processing parameter: all the symbols are backed out of the subkey;
b) With the “forward,position” processing parameter: any trailing sequence of symbol(s)
shall be removed from the subkey (leaving intact the remaining part of the subkey).
6.2.3 Reference comparison method for ordering character strings
The reference comparison method for ordering two given character strings (after collation preparation,
which is not part of the reference comparison method itself) is to compare ordering keys generated by
the reference key formation method described in 6.2.2.
— Begin by building an ordering key, using a given tailored collation weighting table, for each of the
two given character strings being compared.
— Then compare the resulting keys according to the key ordering definition presented in 6.2.4. Keys
can be compared either up to a given level, or up to the last level of the given tailored collation
weighting table.
NOTE The comparison can be made while generating the ordering keys for two strings to be compared,
stopping the key generation when the order of the strings can be determined. Such a technique is sometimes
termed lazy evaluation, and some systems support it by default. This avoids generating the full ordering key when
an ordering difference is found early in the keys. When a bigger set of strings are to be ordered, one can generate
the ordering keys, for example, and store each key or an initial segment of each, before comparing the keys.
8 © ISO/IEC 2020 – All rights reserved
6.2.4 Key ordering definition
Weights for different levels should not be compared, which implies that subkeys at different levels
should not be compared, nor should keys generated from different tailored tables be compared.
NOTE 1 This allows implementations to assign weightings at each level independently of the other levels, and
independently of other tailorings.
m is the maximal level of a given tailored table. Recall that a key is a list, of length m, of subkeys; a subkey
is a list of weights; and a weight is a positive integer. Other notations used below are the following:
— L is the length of the subkey z, i.e., the number of weights in the subkey;
z
— z , where 1 ≤ a ≤ L , is the weight at index position a (an integer > 0) of the subkey z;
wt(a) z
— u , where 1 ≤ b ≤ m, is the subkey at level b (an integer > 0) of the key u.
sk(b)
The orderings of weights, subkeys, and ordering keys (up to a given level, or up to the last level) are
total order relations, defined for a given tailored collation table as follows.
a) Weights are positive integers (in the reference method) and are compared as such for the purposes
of collation.
b) A subkey v is less than a subkey w (written v < w) if and only if there exists an integer, i, where
1 ≤ i ≤ L + 1 and i ≤ L , such that
v w
— i = 1 and v < w , or
wt(i) wt(i)
— for all integers, j, where 1 ≤ j < i, the equality v = w holds, and either
wt( j) wt( j)
— i ≤ L and v < w , or
v wt(i) wt(i)
— i = L +1 and 0 < w .
v wt(i)
A subkey v is greater than a subkey w (written v > w) if and only if w is less than v. A subkey v is
equal to a subkey w (written v = w) if and only if neither v is less than w, nor w is less than v.
c) An ordering key x is less than an ordering key y at level s (written x < y) if and only if there exists
s
an integer i, where 1 ≤ i ≤ s and i ≤ m, such that
— i = 1 and x < y , or
sk(i) sk(i)
— for all integers j, where 1 ≤ j < i, the equality x = y holds, and x < y .
sk( j) sk( j) sk(i) sk(i)
An ordering key x is greater than an ordering key y at level s (written x > y) if and only if y is less
s
than x at level s. An ordering key x is equal to an ordering key y at level s (written x = y) if and only
s
if neither x is less than y at level s, nor y is less than x at level s.
d) For ordering keys, <, >, and = are defined as < , > , and = respectively.
m m m
NOTE 2 For ordering keys, x < y implies x < y, x > y implies x > y, x = y implies x = y, x < y is false, x > y
t t+1 t t+1 t t−1 0 0
is false, and x = y is true. Above level m, for a given tailored table, there are no further ordering distinctions. Note
that this definition implies that if two ordering keys are in the ‘less than’ relationship at level 1, they will also be
in the ‘less than’ relationship at levels 2, 3, 4, etc. In general, whenever two ordering keys are less than at a given
level, they will also automatically be less than at all subsequent, higher levels. Conversely, if two ordering keys
are equal at a given level, they will also automatically be equal at all preceding, lower levels.
NOTE 3 The decomposition of character string into ordering keys of different levels of comparison from the
most significant to the least significant also facilitates fuzzy searches and searches for equivalences. Annex E
documents this kind of comparison.
© ISO/IEC 2020 – All rights reserved 9
6.3 Common Template Table: Formation and interpretation
6.3.1 General
This subclause specifies the following:
— the syntax used to form the Common Template Table in Annex A or a tailored table based upon the
Common Template Table as expressed in Annex A;
— conditions of well-formedness of a table using this syntax;
— interpretation of tailoring statements in deltas for tables formed using this syntax;
— evaluation from symbols to weights of tailored tables formed using this syntax;
— conditions for considering two tables as equivalent;
— conditions for considering comparison results as equivalent.
6.3.2 BNF syntax rules for the Common Template Table in Annex A
6.3.2.1 General
Definitions between make use of terms not defined in this BNF syntax and assume
general English usage.
Other conventions:
* indicates 0 or more repetitions of a token or a group of tokens;
+ indicates 1 or more repetitions of a token or a group of tokens;
? indicates optional occurrence of a token or a group of tokens (0 or 1 occurrences);
parentheses are used to group tokens;
production rules are terminated by a semicolon.
Define collation tables as sequences of lines:
weight_table = common_template_table | tailored_table ;
common_template_table =
simple_line+ ;
tailored_table = table_line+ ;
Define the line types:
simple_line = (symbol_definition | collating_element |
weight_assignment | order_end)?
line_completion ;
table_line = simple_line | tailoring_line ;
tailoring_line = (reorder_after | order_start | reorder_end |
section_definition | reorder_section_after)
line_completion ;
Define the basic syntax for collation weighting:
symbol_definition =
’collating-symbol’ space+ symbol_element ;
symbol_element = symbol | symbol_range ;
symbol_range = symbol ’.’ symbol ;
symbol = simple_symbol | ucs_symbol ;
ucs_symbol = (’’) |
(’’) ;
simple_symbol = ’<’ identifier ’>’ ;
collating_element =
10 © ISO/IEC 2020 – All rights reserved
’collating-element’ space+ symbol space+
’from’ space+ quoted_symbol_sequence ;
quoted_symbol_sequence =
’"’ simple_weight+ ’"’ ;
weight_assignment =
simple_weight | symbol_weight ;
simple_weight = symbol_element | ’UNDEFINED’ ;
symbol_weight = symbol_element space+ weight_list ;
weight_list = level_token (semicolon level_token)* ;
level_token = symbol_group | ’IGNORE’ ;
symbol_group = symbol_element | quoted_symbol_sequence ;
order_end = ’order_end’ ;
Define the tailoring syntax:
reorder_after = ’reorder-after’ space+ target_symbol ;
target_symbol = symbol ;
order_start = ’order_start’ space+ multiple_level_direction ;
multiple_level_direction =
(direction semicolon)* direction (’,position’)? ;
direction = ’forward’ | ’backward’ ;
reorder_end = ’reorder-end’ ;
section_definition =
section_definition_simple |
section_definition_list ;
section_definition_simple =
’section’ space+ section_identifier ;
section_identifier =
identifier ;
section_definition_list =
’section’ space+ section_identifier space+
symbol_list ;
symbol_list = symbol_element (semicolon symbol_element)* ;
reorder_section_after =
’reorder-section-after’ space+ section_identifier
space+ target_symbol ;
Define low-level tokens used by the rest of the syntax:
identifier = (letter | digit) id_part* ;
id_part = letter | digit | ’-’ | ’_’ ;
line_completion =
space* comment? EOL ;
comment = comment_char character* ;
one_to_eight_digit_hex_string =
hex_upper | hex_upper hex_upper |
hex_upper hex_upper hex_upper |
hex_upper hex_upper hex_upper hex_upper |
hex_upper hex_upper hex_upper hex_upper hex_upper |
hex_upper hex_upper hex_upper
hex_upper hex_upper hex_upper |
hex_upper hex_upper hex_upper
hex_upper hex_upper hex_upper hex_upper |hex_upper
hex_upper hex_upper hex_upper
hex_upper hex_upper hex_upper hex_upper ;
hex_numeric_string =
hex_upper+ ;
space = ’ ’ | ;
semicolon = ’;’ ;
comment_char = ’%’ ;
digit = ’0’ | ’1’ | ’2’ | ’3’ | ’4’ |
’5’ | ’6’ | ’7’ | ’8’ | ’9’ ;
hex_upper = digit | ’A’ | ’B’ | ’C’ | ’D’ | ’E’ | ’F’ ;
letter = ’a’ | ’b’ | ’c’ | ’d’ | ’e’ | ’f’ | ’g’ |
’h’ | ’i’ | ’j’ | ’k’ | ’l’ | ’m’ | ’n’ |
’o’ | ’p’ | ’q’ | ’r’ | ’s’ | ’t’ | ’u’ |
’v’ | ’w’ | ’x’ | ’y’ | ’z’ |
’A’ | ’B’ | ’C’ | ’D’ | ’E’ | ’F’ | ’G’ |
’H’ | ’I’ | ’J’ | ’K’ | ’L’ | ’M’ | ’N’ |
’O’ | ’P’ | ’Q’ | ’R’ | ’S’ | ’T’ | ’U’ |
’V’ | ’W’ | ’X’ | ’Y’ | ’Z’ ;
EOL = ;
character =
© ISO/IEC 2020 – All rights reserved 11
character set in use, not including any
characters used to delimit the end of lines> ;
6.3.2.2 Keyword usage
The usage of the following locale syntax keywords is as follows.
collating-symbol Defines a collating symbol represent
...
NORME ISO/IEC
INTERNATIONALE 14651
Sixième édition
2020-12
Technologies de l'information —
Classement international et
comparaison de chaînes de caractères
— Méthode de comparaison de
chaînes de caractères et description
du modèle commun et adaptable
d'ordre de classement
Information technology — International string ordering and
comparison — Method for comparing character strings and
description of the common template tailorable ordering
Numéro de référence
©
ISO/IEC 2020
DOCUMENT PROTÉGÉ PAR COPYRIGHT
© ISO/IEC 2020
Tous droits réservés. Sauf prescription différente ou nécessité dans le contexte de sa mise en œuvre, aucune partie de cette
publication ne peut être reproduite ni utilisée sous quelque forme que ce soit et par aucun procédé, électronique ou mécanique,
y compris la photocopie, ou la diffusion sur l’internet ou sur un intranet, sans autorisation écrite préalable. Une autorisation peut
être demandée à l’ISO à l’adresse ci-après ou au comité membre de l’ISO dans le pays du demandeur.
ISO copyright office
Case postale 401 • Ch. de Blandonnet 8
CH-1214 Vernier, Genève
Tél.: +41 22 749 01 11
E-mail: copyright@iso.org
Web: www.iso.org
Publié en Suisse
ii © ISO/IEC 2020 – Tous droits réservés
Sommaire Page
Avant-propos .iv
Introduction .v
1 Domaine d'application . 1
2 Références normatives . 2
3 Termes et définitions . 2
4 Symboles et conventions . 3
5 Conformité . 3
6 Comparaison de chaînes . 4
6.1 Prétraitement des chaînes de caractères avant comparaison . 4
6.2 Construction des clés et comparaison . 5
6.2.1 Préliminaires . 5
6.2.2 Méthode de référence de construction des clés . 6
6.2.3 Méthode de comparaison de référence pour le tri des chaînes de caractères. 8
6.2.4 Méthode de comparaison de référence pour le tri des chaînes de caractères. 9
6.3 Table-modèle commune: composition et interprétation.10
6.3.1 Généralités .10
6.3.2 Règles de syntaxe BNF pour la table-modèle commune de l’Annexe A . .10
6.3.3 Contraintes de forme . .12
6.3.4 Interprétation des tables adaptées .14
6.3.5 Évaluation des tables de poids .15
6.3.6 Conditions d’équivalence de tables spécifiques .15
6.3.7 Conditions d’équivalence des résultats .16
6.4 Déclaration d’un delta .16
6.5 Nom de la table-modèle commune et déclaration de nom .18
Annexe A (normative) Table-modèle commune .19
Annexe B (informative) Exemples de deltas d’adaptation .21
Annexe C (informative) Prétraitement .31
Annexe D (informative) Annexe didactique sur les solutions apportées par le présent
document aux problèmes de tri lexical .47
Annexe E (informative) Recherches et correspondances floues .51
Bibliographie .53
© ISO/IEC 2020 – Tous droits réservés iii
Avant-propos
L'ISO (Organisation internationale de normalisation) et l’IEC (Commission électrotechnique
internationale) forment le système spécialisé de la normalisation mondiale. Les organismes
nationaux membres de l'ISO ou de l’IEC participent au développement de Normes internationales
par l'intermédiaire des comités techniques créés par l'organisation concernée afin de s'occuper des
domaines particuliers de l'activité technique. Les comités techniques de l'ISO et de l’IEC collaborent
dans des domaines d'intérêt commun. D'autres organisations internationales, gouvernementales et non
gouvernementales, en liaison avec l'ISO et l’IEC, participent également aux travaux.
Les procédures utilisées pour élaborer le présent document et celles destinées à sa mise à jour sont
décrites dans les Directives ISO/IEC, Partie 1. Il convient, en particulier de prendre note des différents
critères d'approbation requis pour les différents types de documents ISO. Le présent document a été
rédigé conformément aux règles de rédaction données dans les Directives ISO/IEC, Partie 2 (voir www
.iso .org/ directives).
L'attention est attirée sur le fait que certains des éléments du présent document peuvent faire l'objet
de droits de propriété intellectuelle ou de droits analogues. L'ISO et l’IEC ne sauraient être tenues pour
responsables de ne pas avoir identifié de tels droits de propriété et averti de leur existence. Les détails
concernant les références aux droits de propriété intellectuelle ou autres droits analogues identifiés
lors de l'élaboration du document sont indiqués dans l'Introduction et/ou dans la liste des déclarations
de brevets reçues par l'ISO (voir www .iso .org/ brevets) ou dans la liste des déclarations de brevets
reçues par l'IEC (voir patents.iec.ch).
Les appellations commerciales éventuellement mentionnées dans le présent document sont données
pour information, par souci de commodité, à l’intention des utilisateurs et ne sauraient constituer un
engagement.
Pour une explication de la nature volontaire des normes, la signification des termes et expressions
spécifiques de l'ISO liés à l'évaluation de la conformité, ou pour toute information au sujet de l'adhésion
de l'ISO aux principes de l’Organisation mondiale du commerce (OMC) concernant les obstacles
techniques au commerce (OTC), voir: www .iso .org/ iso/ avant -propos.
Le présent document a été élaboré par le comité technique ISO/IEC/JTC 1, Technologies de l'information,
sous-comité SC 2, Jeux de caractères codés.
Cette sixième édition annule et remplace la cinquième édition (ISO/IEC 14651:2019), qui a fait l'objet
d'une révision technique.
Les principales modifications par rapport à l’édition précédente sont les suivantes:
— le présent document ajoute les données de classement des nouveaux caractères normalisés dans la
sixième édition de l’ISO/IEC 10646 (2020) ;
— le contenu de 6.2.2 a été révisé pour le rendre plus complet ;
— les poids du caractère U+A9B5 (DIACRITIQUE VOYELLE JAVANAISE TOLONG) ont été modifiés,
car ce dernier est considéré comme une variante du caractère U+A9B4 (DIACRITIQUE VOYELLE
JAVANAISE TARUNG). Cela se devait d’être corrigé.
Il convient que l’utilisateur adresse tout retour d’information ou toute question concernant le présent
document à l’organisme national de normalisation de son pays. Une liste exhaustive desdits organismes
se trouve à l’adresse www .iso .org/ members .html.
iv © ISO/IEC 2020 – Tous droits réservés
Introduction
Le présent document fournit une méthode universelle de mise en ordre des données textuelles. Elle
fournit également une table-modèle commune qui, lorsqu'elle est adaptée, peut satisfaire aux exigences
de tri d’une langue donnée, tout en triant de manière raisonnable les autres écritures.
La table-modèle commune est conçue de sorte qu’une adaptation s’avère nécessaire pour chaque
environnement local. C’est pourquoi la conformité au présent document requiert que les modifications
à cette table commune, appelées «deltas», soient déclarées de manière à documenter les différences
dans les résultats.
Le présent document décrit une méthode pour classer l’information textuelle de manière indépendante
du contexte.
L’ISO/IEC TR 30112 contient des dispositions pour le tri complémentaires à celles du présent document;
on y trouve aussi des renseignements complémentaires sur les mots-clés définis dans le présent
document et utilisés pour le tri.
© ISO/IEC 2020 – Tous droits réservés v
NORME INTERNATIONALE ISO/IEC 14651:2020(F)
Technologies de l'information — Classement international
et comparaison de chaînes de caractères — Méthode de
comparaison de chaînes de caractères et description du
modèle commun et adaptable d'ordre de classement
1 Domaine d'application
Le présent document définit ce qui suit.
— Une méthode de référence pour la comparaison de deux chaînes de caractères ayant pour but de
déterminer leur ordre de classement dans une liste triée. La méthode s'applique à des chaînes
utilisant le répertoire complet de l’ISO/IEC 10646, des sous-répertoires tels que ceux des divers
jeux normalisés ISO/IEC à 8 bits ou tout autre jeu de caractères, normalisé ou non, et permet de
produire des résultats de tri valables (après adaptation) pour un ensemble de langues de chaque
système d’écriture. Cette méthode de référence utilise des tables de tri dérivées soit de la table-
modèle commune de classement définie dans le présent document, soit d’une de ses adaptations.
La méthode procure un format de référence de la table-modèle commune. Ce format est décrit en
notation BNF (forme de Backus-Naur, Backus-Naur Form). Son emploi est normatif dans le présent
document.
— Une table-modèle commune de classement utilisée par la méthode de référence. Cette table
décrit un ordre de base pour tous les caractères du standard Unicode 13.0 compris dans
l’ISO/IEC 10646:2020. Tout cela permet de spécifier un ordre complètement déterministe. Cette
table constitue le point de départ permettant de préciser un ordre de classement adapté aux règles
de classement locales, sans qu’il soit nécessaire de connaître tous les systèmes d’écriture repris
dans le jeu universel de caractères codés (JUC).
NOTE 1 Cette table-modèle commune de classement est destinée à être modifiée pour satisfaire aux
besoins d'environnements locaux. L'avantage principal de cette pratique, sur le plan mondial, réside dans le
fait que, pour d'autres systèmes d’écriture que celui de l’utilisateur, aucune modification n’est nécessaire et
cet ordre demeurera aussi cohérent que possible et prévisible dans un contexte international.
NOTE 2 Le répertoire de caractères utilisé dans le présent document est équivalent à celui du standard
[27]
Unicode, version 13.0 .
— Un nom de référence représentant cette version particulière de la table-modèle commune, à utiliser
comme point de départ à toute adaptation. Ce nom implique notamment que la table est liée à un
stade de développement particulier du jeu universel de caractères codés (ISO/IEC 10646).
— Des exigences pour la déclaration de différences (delta) entre une table de tri et la table-modèle
commune.
Le présent document ne spécifie pas ce qui suit.
— Une méthode particulière de comparaison; toute méthode équivalente conduisant aux mêmes
résultats est acceptable.
— Un format précis pour décrire ou pour adapter les tables dans une mise en œuvre donnée.
— Des symboles précis à utiliser par les mises en œuvre, sauf pour ce qui est du nom de la table-modèle
commune de classement.
— Une interface utilisateur particulière destinée à choisir les options.
© ISO/IEC 2020 – Tous droits réservés 1
— Un format interne particulier pour les clés intermédiaires utilisées dans les comparaisons ou pour
la table de tri. L’utilisation de clés numériques n’est pas spécifiée non plus.
— Un ordre dépendant du contexte.
— Un prétraitement particulier des chaînes de caractères avant comparaison.
NOTE 1 Bien que ceci ne soit pas spécifié par le présent document, il s’avère souvent nécessaire de préparer
les chaînes de caractères avant leur comparaison (cf. l’Annexe C).
NOTE 2 L'Annexe D décrit les problèmes qui ont donné lieu à la présente Norme internationale avec leurs
solutions anticipées.
2 Références normatives
Les documents suivants sont cités dans le texte de sorte qu’ils constituent, pour tout ou partie de leur
contenu, des exigences du présent document. Pour les références datées, seule l’édition citée s’applique.
Pour les références non datées, la dernière édition du document de référence s'applique (y compris les
éventuels amendements).
ISO/IEC 10646:2020, Technologies de l’information — Jeu universel de caractères codés (JUC)
3 Termes et définitions
Pour les besoins du présent document, les termes et définitions suivants s’appliquent.
L’ISO et l’IEC tiennent à jour des bases de données terminologiques destinées à être utilisées en
normalisation, consultables aux adresses suivantes:
— ISO Online browsing platform: disponible à l’adresse https:// www .iso .org/ obp
— IEC Electropedia: disponible à l’adresse http:// www .electropedia .org/
3.1
chaîne de caractères
suite de caractères considérée comme un objet simple
Note 1 à l'article: Note à l'article: Une chaîne de caractères à trier ne comprend normalement pas les caractères
qui la délimitent, comme par exemple un caractère de commande de fin de ligne dans un fichier texte à trier.
3.2
symbole de tri
symbole (3.12) utilisé pour préciser les poids attribués à un élément de tri (3.4)
3.3
table de tri
table de poids
table reliant les éléments de tri (3.4) aux éléments de poids (3.14)
3.4
élément de tri
suite constituée d’un ou de plusieurs caractères considérés comme une seule entité aux fins du tri (3.7)
3.5
delta
liste des différences que présente une table de tri (3.3) donnée par rapport à une autre
Note 1 à l'article: Une table de tri donnée associée à un delta donné forme une nouvelle table de tri.
Note 2 à l'article: Sauf mention contraire, le terme «delta» désigne toujours les différences par rapport à la table-
modèle commune définie dans le présent document.
2 © ISO/IEC 2020 – Tous droits réservés
3.6
niveau
niveau de tri
numéro d’une sous-clé (3.11) dans la série de sous-clés formant une clé
3.7
tri
procédé par lequel on détermine si, de deux chaînes, la première est plus petite, égale ou plus grande
que la seconde
3.8
clé de tri
série de sous-clés (3.11) utilisée pour déterminer un ordre
3.9
prétraitement
procédé par lequel des chaînes de caractères (3.1) données sont transformées en d’autres chaînes avant
le calcul de la clé de tri (3.8) de chaque chaîne
3.10
méthode de comparaison de référence
méthode de détermination de l’ordre relatif de deux clés de tri (3.8)
Note 1 à l'article: Voir l'Article 6.
3.11
sous-clé
suite de poids calculée pour une chaîne de caractères (3.1)
3.12
symbole
élément de tri (3.4)
3.13
poids
poids de tri
entier positif, utilisé dans les sous-clés (3.11), pour indiquer l’ordre relatif des éléments de tri (3.4)
3.14
élément de poids
liste d’un certain nombre de poids séquentiellement ordonnés par niveau
4 Symboles et conventions
Selon l’ISO/IEC 10646, les caractères se représentent à l’aide de UX, où X correspond à une série
d’un à huit chiffres hexadécimaux (où toutes les lettres de la série de chiffres hexadécimaux sont en
majuscules) et où X est le numéro du caractère dans l’ISO/IEC 10646. Cette convention est reprise dans
le présent document.
Dans la table-modèle commune, des symboles arbitraires représentent des poids selon la notation BNF
décrite en 6.3.1.
5 Conformité
Un processus est conforme au présent document s’il produit des résultats identiques à ceux qui résultent
de l’application des spécifications décrites en 6.2 à 6.5.
© ISO/IEC 2020 – Tous droits réservés 3
Toute déclaration de conformité au présent document doit être accompagnée, directement ou par
référence, d’une déclaration de ce qui suit.
— Le nombre de niveaux de tri que le processus peut utiliser; ce nombre doit être égal ou supérieur
à trois.
— Si le paramètre de traitement forward,position est permis.
— Si le paramètre de traitement backward est permis et à quel niveau.
— Le delta d’adaptation décrit en 6.4 et le nombre de niveaux définis dans ce delta.
— Si un processus de prétraitement est utilisé, la méthode utilisée doit être déclarée.
Il incombe au producteur de montrer en quoi sa déclaration de delta est reliée à la syntaxe de la table
décrite en 6.3, et comment la méthode de comparaison utilisée, si elle est différente de celle mentionnée
à l’Article 6, peut être considérée comme produisant les mêmes résultats que ceux spécifiés par la
méthode décrite à l’Article 6. L'usage d'un processus de prétraitement est optionnel et ses détails ne
sont pas précisés dans le présent document.
Il est fortement recommandé que l’application présente à l’utilisateur les options et adaptations
disponibles.
6 Comparaison de chaînes
6.1 Prétraitement des chaînes de caractères avant comparaison
Il peut s’avérer nécessaire de transformer les chaînes de caractères avant de leur appliquer la méthode
de comparaison de référence. Bien que n’étant pas l’objet du présent document, le prétraitement peut
être une partie importante du processus de tri. Voir l’Annexe C pour des exemples de prétraitement.
Les caractères de la chaîne d'entrée doivent être codés conformément à l’ISO/IEC 10646 (JUC) ou une
correspondance à l’ISO/IEC 10646 doit être fournie si une autre forme de codage est utilisée.
Par conséquent, une partie importante de la phase préparatoire consiste à transformer les caractères
d’un codage non-JUC à des caractères du JUC fournis en entrée à la méthode de comparaison. Cette
tâche peut comprendre notamment le traitement correct de séquences d’échappement dans le codage
original, la transformation de caractères sans attribution dans le JUC à des positions de code dans la
zone privée et la transposition de caractères dans le cas de chaînes qui ne seraient pas stockées en
ordre logique. Par exemple, dans le cas de codages arabes en ordre visuel, les caractères doivent être
mis en ordre logique; dans le cas de certains codages à usage bibliographique, les accents combinatoires
stockés avant leur caractère de base doivent être déplacés après le caractère de base. La suite résultante
peut devoir être retransformée dans le codage original.
La table-modèle commune est conçue de sorte que les séquences combinatoires et les caractères simples
(précomposés) correspondants aient exactement le même ordre. Pour éviter de violer par mégarde cet
invariant (et au passage la conformité à Unicode), il convient que l’adaptation change le classement
des séquences combinatoires quand le classement des caractères précomposés correspondants est
changé. Par exemple, si Ä est déplacé après Z, il convient alors de changer aussi le classement de la
séquence combinatoire + < tréma combinatoire >. Pour éviter de révéler des différences de codage
invisibles à l’utilisateur, on recommande de normaliser les chaînes selon la forme FND de l’algorithme
de normalisation Unicode – voir [29] dans la bibliographie.
Les séquences d’échappement et les caractères de commande sont très délicats à interpréter; il est
fortement recommandé de les filtrer ou de les transformer.
NOTE Puisque la méthode de comparaison de référence est une description logique du procédé de
comparaison de chaînes, rien n’empêche une mise en œuvre de cette méthode d’utiliser exclusivement un codage
autre qu’un codage du JUC, pour autant que les résultats obtenus soient les mêmes que si la méthode de référence
était utilisée.
4 © ISO/IEC 2020 – Tous droits réservés
6.2 Construction des clés et comparaison
6.2.1 Préliminaires
6.2.1.1 Hypothèses
La table de tri est une transformation des éléments de tri en éléments de poids. Pour chaque élément
de poids, la table-modèle commune décrit quatre niveaux. L’adaptation peut augmenter ou réduire ce
nombre de niveaux, mais pas à moins de trois.
NOTE Dans la table-modèle commune, les niveaux ont généralement les significations suivantes, bien que cet
usage ne soit pas absolu:
Niveau 1: ce niveau correspond généralement au jeu de lettres de base pour une écriture
alphabétique, au jeu de caractères courants pour une écriture idéographique ou syllabique.
Niveau 2: ce niveau correspond généralement aux diacritiques pouvant accompagner les caractères
de base de chaque écriture. En certaines langues, les lettres accentuées sont considérées comme des
lettres de base de l’alphabet et ne sont pas affectées par ce niveau, mais seulement par le premier
niveau. En espagnol par exemple, le N TILDE est considéré comme une lettre de base de l’alphabet
latin; par conséquent, une adaptation pour l’espagnol changera la définition de N TILDE de «le poids
d’un N au premier niveau et le poids d’un TILDE au second niveau» à «le poids d’un N TILDE (entre
N et O) au premier niveau et une indication de l’absence de diacritique au second niveau». Pour
certains caractères, on prend également en compte des variantes de forme au second niveau, par
exemple ß (la LETTRE MINUSCULE LATINE S DUR), qui est traitée comme un équivalent de ss au
premier niveau mais s’en distingue traditionnellement au second niveau.
Niveau 3: ce niveau est généralement associé aux distinctions de casse (majuscules-minuscules) ou
aux variantes de formes (comme la distinction entre hiragana et katakana).
Niveau 4: ce niveau est généralement consacré aux distinctions pondérales plus fines que celles des
autres niveaux. Le dernier niveau (le quatrième dans la table-modèle commune) est souvent utilisé
pour donner des poids additionnels à des caractères «spéciaux», c’est-à-dire des caractères qui ne
sont pas normalement utilisés dans l’orthographe des mots d’une langue (ponctuation, vignettes,
etc.), souvent appelés «ignorables» dans le contexte du tri informatique.
6.2.1.2 Propriétés de traitement
Une table de tri adaptée donnée possède des propriétés spécifiques de balayage et de classement. Ces
propriétés peuvent avoir été changées par l’adaptation.
Une direction de balayage (vers l’avant ou vers l’arrière) pour chaque niveau est utilisée pour indiquer
comment traiter la chaîne. La direction de balayage est une propriété globale de chaque niveau défini
dans la table adaptée.
Si le dernier niveau est supérieur à trois, il existe une propriété optionnelle de ce niveau appelée l’option
«position»: lorsqu'elle est active, une comparaison des positions numériques de chaque caractère
«ignorable» dans les deux chaînes est effectuée, avant de comparer leurs poids. En d’autres mots, si deux
chaînes sont équivalentes à tous les niveaux sauf le dernier, la chaîne contenant un caractère ignorable
en position la plus basse est classée avant l’autre. Si les caractères ignorables ont les mêmes positions,
alors leurs poids sont considérés jusqu’à ce qu’une différence soit trouvée. Le traitement correct de
cette propriété optionnelle n’est pas nécessaire à la conformité au présent document.
NOTE La direction de balayage (vers l’avant ou vers l’arrière) n’est normalement pas reliée à la direction
naturelle d’écriture. La direction de balayage s’applique à la suite logique de la chaîne de caractères codés.
Dans le cas d’écritures de droite à gauche comme l’arabe, l’ISO/IEC 10646 spécifie que les premiers
caractères en ordre logique sont ceux apparaissant à droite en ordre de présentation. En écriture latine
au contraire, les premiers caractères en ordre logique apparaissent à gauche en ordre de présentation.
© ISO/IEC 2020 – Tous droits réservés 5
Le balayage vers l’avant commence au début de la séquence en ordre logique, alors que le balayage vers
l’arrière commence à la fin, sans égard à la direction de présentation. La direction de balayage à des fins
de tri est une propriété globale de chaque niveau décrit dans la table.
Dans l’ISO/IEC 10646, l’écriture arabe est artificiellement séparée en deux pseudo-écritures: 1)
l’écriture arabe logique, intrinsèque, codée indépendamment des formes contextuelles et 2) les formes
de présentations arabes. Les deux permettent le codage complet de l’arabe, mais le codage intrinsèque
est normalement privilégié pour sa meilleure capacité de traitement, alors que certaines applications de
présentation préfèrent les formes de présentation. L’ISO/IEC 10646 ne spécifie pas l’ordre de stockage
des formes de présentation; dans certaines réalisations, elles sont stockées en ordre inverse de celui
utilisé pour le codage intrinsèque. Par conséquent, il est recommandé, lors de la phase de préparation,
de s'assurer que les formes de présentation arabes et les autres caractères arabes soient fournis en
ordre logique à la méthode de comparaison.
Une table de tri adaptée peut être séparée en sections pour faciliter l’adaptation. On donne alors à
chaque section un nom, conformément aux dispositions de 6.3.1. Une des possibilités d’adaptation est
de donner un certain ordre à chaque section et de changer l’ordre relatif d’une section par rapport à
d’autres.
6.2.2 Méthode de référence de construction des clés
6.2.2.1 Généralités
Lorsque deux chaînes doivent être comparées pour déterminer leur ordre relatif, elles sont d’abord
analysées en séquences d’éléments de tri, en tenant compte des déclarations «collating-element» à
caractères multiples présentes dans la table de tri (si la syntaxe de 6.3.2 est utilisée). Dans la syntaxe
utilisée pour exprimer la table-modèle commune, le nom d’un élément de tri associé à un seul caractère
est formé de la lettre «U» suivie du numéro du caractère dans le JUC, en notation hexadécimale. Les
noms et caractères associés aux éléments de tri multicaractère sont définis par les déclarations
d’éléments de tri.
NOTE Les éléments de tri comportant plus de caractères sont préférés à ceux qui sont plus courts. Par
exemple, si un élément de tri comportant plusieurs caractères est défini pour «abc» et qu’un autre est défini pour
«ab» ou qu’un autre l’est pour «bc», alors, si «abc» se présente, l’élément de tri pour «abc» s’appliquera et non
celui pour «ab» ou «bc».
Une suite de m sous-clés intermédiaires est alors formée de chaque chaîne, m étant le nombre de
niveaux décrits dans une table de poids de tri adaptée.
Chaque clé de tri est une suite de sous-clés. Chaque sous-clé est une liste de poids numériques. Une
sous-clé est construite en ajoutant successivement la liste des poids attribués à chaque élément de
tri de la chaîne au niveau de la sous-clé en construction. Dans la table-modèle commune, le mot-clé
«IGNORE» trouvé en place d’une suite de poids à un niveau indique que la suite de poids à ce niveau pour
cet élément de tri est vide.
6.2.2.2 Annulation de certains éléments de tri
Dans la formation d’une clé de tri, tout élément de tri qui est ignoré au premier niveau ou aux deux
premiers niveaux et qui succède à un élément de tri ignoré à tous les niveaux sauf le dernier ne conserve
pas ses poids tels qu’ils sont donnés dans la table-modèle commune (ou son adaptation), mais chacun de
ces poids doit être annulé (cela signifie que l’on doit remplacer chaque poids non nul par un poids nul:
).
6.2.2.3 Calcul de poids implicites
Si la table adaptée ne contient pas d’entrée pour un caractère de la chaîne d’entrée, les poids de ce
caractère ne sont pas définis. Il faut dans ce cas calculer un poids primaire dit «implicite», constitué
d’une paire de seizets – appelons-les «aaaa» et «bbbb» – et supposer l’existence de lignes d’adaptation
de la forme suivante:
6 © ISO/IEC 2020 – Tous droits réservés
"";;;
16 16
NOTE (au dernier niveau) est le plus grand poids de premier niveau dans la table-modèle commune.
La règle de calcul d’un poids implicite n’est pas uniforme; des distinctions doivent être faites parmi les
caractères qui n’ont pas d’entrée dans la table de tri:
a) Idéogrammes han unifiés:
Pour un caractère han à la position de code pc:
base_poids = 0xFB40 pour le RUO original
base_poids = 0xFB80 pour les caractères han des extensions A à G
aaaa = [base_poids + (pc >> 15)]
bbbb = [(pc & 0x7FFF) | 0x8000]
b) Caractères idéographiques et composants tangoutes:
Pour un caractère tangoute à la position de code pc:
base_poids = 0xFB00
aaaa = [base_poids]
bbbb = [(pc - 0x17000) | 0x8000]
c) Caractères idéographiques nüshu:
Pour un caractère nüshu à la position de code pc:
base_poids = 0xFB01
aaaa = [base_poids]
bbbb = [(pc - 0x1B170) | 0x8000]
d) Caractères idéographiques de la petite écriture khitane:
Pour un caractère de la petite écriture khitane à la position de code pc:
base_poids = 0xFB02
aaaa = [base_poids]
bbbb = [(pc - 0x18B00) | 0x8000]
e) Les autres points de code non mentionnés explicitement dans la table, c’est-à-dire les non-
caractères, les demi-codets et tout point de code réservé pour une normalisation future (autrement
dit, non encore attribué à un caractère du répertoire):
Pour un caractère à la position de code pc:
base_poids = 0xFBC0
aaaa = [base_poids + (pc >> 15)]
bbbb = [(pc & 0x7FFF) | 0x8000]
Les valeurs sont donc obtenues par le truchement de calculs d’opérations bit à bit, et dans chaque cas
elles doivent être exprimées en base 16. Le poids de premier niveau se présente alors sous la forme
suivante: "".
© ISO/IEC 2020 – Tous droits réservés 7
Les caractères décomposables sont exclus de ces traitements, car ils ont une entrée dans la table modèle
commune (avec des poids de premier niveau sous la forme d’une paire couplée).
Dans le cas d’une suite mal formée d’octets, il y a deux options possibles: soit chaque octet de la séquence
est ignoré, soit la séquence est traitée comme s’il s’agissait du caractère U+FFFD (CARACTÈRE DE
REMPLACEMENT). Les mêmes options s’appliquent à d’éventuelles valeurs hors limite (pc > 10FFFF ).
NOTE 1 Les plages dans lesquelles sont codés les caractères han, tangoutes, nüshu et de la petite écriture
khitane sont définies dans les commentaires ajoutés à la table-modèle commune (à la fin du fichier).
NOTE 2 Avec la méthode des poids implicites, les caractères sans entrée dans la table de tri sont ordonnés
selon la valeur scalaire du point de code au sein de l’ensemble (han, tangoute, nüshu, petite écriture khitane,
autre) auquel ils appartiennent, et ils sont triés correctement relativement aux autres caractères.
6.2.2.4 Formation des sous-clés
Il y a trois façons de former des sous-clés: vers l’avant (paramètre de traitement «forward»), vers
l’arrière (paramètre de traitement «backward») et de façon positionnelle (paramètre de traitement
«forward,position»). Les sous-clés formées de façon positionnelle ne peuvent apparaître qu’au dernier
niveau et seulement si ce niveau est supérieur à trois. La conformité n’exige pas la formation de sous-
clés de façon positionnelle; une réalisation incapable de formation positionnelle doit interpréter
«forward,position» comme s’il s’agissait de «forward».
6.2.2.5 Formation des sous-clés aux trois premiers niveaux
En présence du paramètre de traitement «forward» ou «forward,position», on construit la sous-clé en
balayant vers l’avant un à un les éléments de tri de la chaîne de caractères d’entrée pour leur attribuer
un poids. On obtient les poids en recherchant les éléments de tri dans la table de poids de tri adaptée
donnée et en extrayant la liste de poids pour le niveau considéré. Cette liste de poids s’ajoute à la fin de
la sous-clé.
En présence du paramètre de traitement «backward» à un niveau donné, on construit la sous-clé vers
l’avant, comme indiqué ci-devant, et on la renverse, poids par poids.
6.2.2.6 Formation de la sous-clé au quatrième niveau
Au dernier niveau, la sous-clé est construite comme cela est décrit dans l'alinéa précédent. Toutefois,
une fois que la clé de tri est formée complètement (lorsque la fin de la chaîne est atteinte), deux options
se présentent:
a) En présence du paramètre de traitement «forward»: on supprime toutes les occurrences du poids
qui se présentent dans la sous-clé;
b) En présence du paramètre de traitement «forward,position»: on doit supprimer de la sous-clé toute
séquence de queue de la valeur (la partie qui subsiste reste intacte).
6.2.3 Méthode de comparaison de référence pour le tri des chaînes de caractères
La méthode de comparaison de référence pour le classement de deux chaînes de caractères (après le
prétraitement, qui ne fait pas partie de cette méthode de comparaison) consiste à comparer les clés de
tri construites selon la méthode de référence décrite en 6.2.2 du présent document:
— En utilisant une table de poids de tri adaptée donnée, construire une clé de tri pour chacune des
chaînes à comparer.
— Comparer ensuite les clés selon la définition de l’ordre des clés donnée en 6.2.4. Les clés peuvent
être comparées jusqu’à un niveau donné ou jusqu’au dernier niveau de la table de poids de tri
adaptée donnée.
8 © ISO/IEC 2020 – Tous droits réservés
NOTE La comparaison peut être effectuée pendant la construction des clés, en arrêtant cette construction
dès que l’ordre des chaînes peut être déterminé. Cette technique est parfois appelée évaluation paresseuse et
certains systèmes l’utilisent implicitement. Elle permet d’éviter la construction complète des clés quand une
différence est trouvée tôt pendant la construction. Quand un ensemble important de chaînes doit être trié, l’on
peut par exemple construire et stocker les clés – ou tout au moins un segment initial – avant de les comparer.
6.2.4 Méthode de comparaison de référence pour le tri des chaînes de caractères
Il convient de ne pas comparer les poids associés à des niveaux différents, ni par conséquent les sous-
clés de différents niveaux. Il convient de ne pas comparer non plus les clés construites à partir de tables
adaptées différentes.
NOTE 1 Ceci permet aux mises en œuvre d’attribuer les poids à chaque niveau indépendamment des autres
niveaux et sans égard à d’autres tables adaptées.
m est le plus grand niveau d’une table adaptée donnée. Rappelons qu’une clé est une liste, de longueur
m, de sous-clés; une sous-clé est une liste de poids; un poids est un entier positif. D’autres notations
utilisées ci-dessous sont:
— L est la longueur de la sous-clé z, c’est-à-dire le nombre de poids dans cette sous-clé.
z
— z , où 1 ≤ a ≤ L , est le poids à la position a (un entier > 0) de la sous-clé z.
pd(a) z
— u , où 1 ≤ b ≤ m, est la sous-clé de niveau b (un entier > 0) de la clé u.
sc(b)
Les ordres des poids, des sous-clés et des clés de tri (jusqu’à un certain niveau ou jusqu’au dernier
niveau) sont des relations d’ordre total, définies pour une table de tri adaptée donnée comme suit:
a) Les poids sont des valeurs entières positives (dans la méthode de référence) et sont comparés
comme tels aux fins du classement.
b) Une sous-clé v est plus petite qu’une sous-clé w (on notera v < w) si et seulement s’il existe un
entier i, où 1 ≤ i ≤ L +1 et i ≤ L , tel que
v w
— i = 1 et v < w , ou
pd(i) pd(i)
— pour tous les entiers j, 1 ≤ j < i, l’égalité v = w est maintenue, et soit
pd( j) pd( j)
— i ≤ L et v < w , soit
v pd(i) pd(i)
— i = L +1 et 0 < w
v pd(i).
Une sous-clé v est plus grande qu’une sous-clé w (on notera v > w) si et seulement si w est plus
petite que v. Une sous-clé v est égale à une sous-clé w (on notera v = w) si et seulement si v n’est pas
plus petite que w et w n’est pas plus petite que v.
c) Une clé de tri x est plus petite qu’une clé de tri y au niveau s (on notera x < y) si et seulement s’il
s
existe un entier i, où 1 ≤ i ≤ s et i ≤ m, tel que
— i = 1 et x < y , ou
sc(i) sc(i)
— pour tous les entiers j, 1 ≤ j < i, l’égalité x = y est maintenue, et x < y .
sc( j) sc( j) sc(i) sc(i)
Une clé de tri x est plus grande qu’une clé de tri y au niveau s (on notera x > y) si et seulement si
s
y est plus petite que x au niveau s. Une clé de tri x est égale à une clé de tri y au niveau s (on notera
x = y) si et seulement si x n’est pas plus petite que y au niveau s et y n’est pas plus petite que x au
s
niveau s.
d) Pour les clés de tri, < , > et = sont définis comme < , > et = respectivement.
m m m
© ISO/IEC 2020 – Tous droits réservés 9
NOTE 2 Pour les clés de tri, x < y implique que x < y, x > y implique que x > y, x = y implique que x = y,
t t+1 t t+1 t t−1
x < y est faux, x > y est faux et x = y est vrai. Au-delà du niveau m, pour une table adaptée donnée, il n’y a plus
0 0 0
de distinctions d’ordre. On notera que cette définition implique que si une clé est «plus petite» qu’une autre au
niveau 1, elle est aussi «plus petite» aux niveaux 2, 3, 4, etc. En général, lorsqu’une clé est plus petite qu’une autre
à un certain niveau, elle l’est aussi à tous les niveaux subséquents. A contrario, lorsque deux clés sont égales à un
certain niveau, elles sont aussi égales à tous les niveaux inférieurs.
NOTE 3 La décomposition d’une chaîne de caractères en clés de tris de différents niveaux de comparaison
du plus significatif au moins significatif permet aussi de faciliter les recherches floues et les recherches
d’équivalences. L’Annexe E documente ce genre de comparaison.
6.3 Table-modèle commune: composition et interprétation
6.3.1 Généralités
Ce paragraphe précise:
— La syntaxe utilisée par la table-modèle commune donnée à l’Annexe A ou par une table adaptée
basée sur la table-modèle commune telle que donnée à l’Annexe A.
— Les contraintes de forme d’une table utilisant cette syntaxe.
— L’interprétation à donner aux énoncés d’adaptation dans les deltas pour des tables utilisant cette
syntaxe.
— L’évaluation des symboles en poids dans les tables adaptées utilisant cette syntaxe.
— Les conditions d’équivalence de deux tables.
— Les conditions d’équivalence des résultats de comparaison.
6.3.2 Règles de syntaxe BNF pour la table-modèle commune de l’Annexe A
6.3.2.1 Généralités
Les définitions < entre crochets > utilisent des termes qui ne sont pas définis dans cette syntaxe BNF et
suivent l’usage général en français.
Autres conventions:
* indique une répétition (0 fois ou plus) d’un atome ou d’un groupe d’atomes;
+ indique une répétition (1 fois ou plus) d’un atome ou d’un groupe d’atomes;
? indique l’apparition optionnelle (0 ou 1 fois) d’un atome ou d’un groupe d’atomes;
des parenthèses servent à grouper des atomes;
les productions se terminent par un point-virgule.
Définition des tables de tri comme des suites de lignes:
table_de_poids = table-modèle_commune | table_adaptée;
table-modèle_commune =
ligne_simple+;
table_adaptée = ligne_de_table+;
Définition des types de lignes:
ligne_simple = (définition_de_symbole | élément_de_tri |
attribution_de_poids | fin_ordre)? achèvement_de_ligne;
ligne_de_table = ligne_simple | ligne_adaptation; ligne_adaptation
10 © ISO/IEC 2020 – Tous droits réservés
= (reclasser_après | début_ordre | fin_de_reclassement |
définition_de_section | reclasser_section_après)
achèvement_de_ligne;
Définition de la syntaxe de base pour les poids de tri:
définition_de_symbole =
’collating-symbol’ espace+ élément_symbole;
élément_symbole = symbole | symbole_intervalle;
symbole_intervalle = symbole ’.’ symbole;
symbole = symbole_simple | symbole_juc;
symbole_juc = (’’) |
(’’);
symbole_simple = ’<’ identifiant ’>’;
élément_de_tri =
’collating-element’ espace+ symbole espace+
’from’ espace+ suite_de_symboles_cités;
suite_de_symboles_cités =
’"’ poids_simple+ ’"’;
attribution_de_poids =
poids_simple | poids_symbolique;
poids_simple = élément_symbole | ’UNDEFINED’;
poids_symbolique =
élément_symbole espace+ liste_de_poids;
liste_de_poids = atome_de_niveau (point-virgule atome_de_niveau)*;
atome_de_niveau = groupe_de_symboles | ’IGNORE’;
groupe_de_symboles = élément_symbole | suite_de_symboles_citée;
fin_ordre = ’order_end’;
Définition de la syntaxe d’adaptation:
reclasser_après = ’reorder-after’ espace+ symbole_cible;
symbole_cible = symbole;
début_ordre = ’order_start’ espace+ direction_multiniveau;
direction_multiniveau =
(direction point-virgule)* direction (’,position’)?;
direction = ’forward’ | ’backward’;
fin_de_reclassement = ’reorder-end’;
définition_de_section =
définition_de_section_simple |
définition_de_section_liste;
définition_de_section_simple =
’section’ espace+ identifiant_de_section;
identifiant_de_section =
identifiant;
définition_de_section_liste =
...
記事のタイトル:ISO/IEC 14651:2020 - 情報技術-国際文字列の順序付けと比較- 文字列の比較方法と共通テンプレート変更可能な順序に関する説明 この文書は以下を定義します。-参照比較方法。この方法は、2つの文字列の並べ替え順序をソートされたリストで決定するために適用されます。この方法は、ISO/IEC 10646の完全なレパートリーを含む文字列に適用できます。この方法は、そのレパートリーのサブセット、例えば異なるISO/IEC 8ビット標準文字セットなど、または標準化されていない任意の文字セットにも適用でき、各スクリプトの指定された言語セットに対して(テイラリング後に)有効な順序結果を生成します。この方法は、この文書で定義された共通テンプレートテーブルまたはそのテイラリングのいずれかから派生した並べ替えテーブルを使用します。この方法は参照書式を提供します。この書式はBackus-Naur形式(BNF)を使用して記述されます。この形式は共通テンプレートテーブルを記述するために使用されます。この文書では法的に使用されます。 -共通テンプレートテーブル。参照比較方法によって共通テンプレートテーブルの特定のテイラリングが使用されます。共通テンプレートテーブルは、ISO/IEC 10646:2020に含まれるUnicode 13.0標準でエンコードされたすべての文字の順序を記述します。このテーブルにより、ローカルの順序ルールに適した文字列の順序を指定することができ、実装者がUniversal Coded Character Set(UCS)に既にエンコードされた様々なスクリプトのすべてを知る必要はありません。注1:この共通テンプレートテーブルはローカル環境のニーズに応じて修正する必要があります。世界的な利点は、他のスクリプトの場合、通常修正は必要なく、順序ができる限り一貫性があり、国際的な視点から予測可能になることです。注2:この文書で使用される文字のレパートリーは、Unicode Standardバージョン13.0と同等です。 -参照名。参照名は共通テンプレートテーブルの特定のバージョンを指し、そのテーブルがISO/IEC 10646 Universal coded character setの特定の開発段階と関連付けられていることを示します。 この文書は以下を強制しません。-特定の比較方法。同じ結果を提供する等価な方法であれば受け入れられます。-特定のテーブルの説明やテイラリングのための特定の形式。-実装に使用される特定の記号、共通テンプレートテーブルの名前以外の指定されたシンボル。-オプションを選択するための特定のユーザーインターフェース。-比較時に使用される中間キーの特定の内部形式や使用されるテーブルの特定の内部形式。数字キーの使用も強制しません。-文脈に依存した順序。-比較前の文字列の特定の準備。注1:通常、本文書で指示されていなくても、文字列の比較前に文字列の準備が必要です(付録C参照)。注2:付録Dでは、この国際標準の準備につながる問題と予想される解決策について説明します。
ISO/IEC 14651:2020 is a standard that defines a method for comparing character strings and describes the Common Template Tailorable Ordering. The method can determine the collating order of two character strings in a sorted list and is applicable to strings containing characters from ISO/IEC 10646. It can also be applied to subsets of that repertoire to produce ordering results specific to a given set of languages for each script. The method uses collation tables derived from the Common Template Table defined in the document. The Common Template Table allows for a fully deterministic ordering of all characters encoded in the Unicode 13.0 standard. It enables the specification of a string ordering adapted to local ordering rules without requiring knowledge of all the different scripts encoded in the Universal Coded Character Set (UCS). The document also includes requirements for declaring the differences between the collation table and the Common Template Table. It does not mandate specific comparison methods, table formats, symbols for implementation, user interfaces, internal formats for keys used in comparison, or context-dependent ordering. The article contains two notes that provide additional information on character string preparation and the problems that led to the development of this International Standard.
제목: ISO/IEC 14651:2020 - 정보기술 - 국제 문자열 순서 및 비교 - 문자열 비교 방법 및 공통 템플릿 수정 가능한 순서에 대한 설명 본 문서는 다음을 정의합니다. - 참조 비교 방법입니다. 이 방법은 정렬된 목록에서 두 문자열의 정렬 순서를 결정하기 위해 두 문자열에 적용될 수 있습니다. 이 방법은 ISO/IEC 10646의 전체 문자 레퍼토리를 포함하는 문자열에 적용될 수도 있습니다. 이 방법은 또한 그 레퍼토리의 하위 집합, 예를 들어 다른 ISO/IEC 8비트 표준 문자 집합 또는 표준화되지 않은 어떤 문자 집합에도 적용될 수 있으며, 각 스크립트의 주어진 언어 집합에 대해 순서결과를 (수정 후) 생성합니다. 이 방법은 이 문서에서 정의한 공통 템플릿 테이블 또는 그 템플릿 중 하나로부터 유도된 순서 테이블을 사용합니다. 이 방법은 참조 형식을 제공합니다. 이 형식은 Backus-Naur 양식 (BNF)을 사용하여 설명됩니다. 이 형식은 공통 템플릿 테이블을 설명하는 데 사용됩니다. 이 문서에서 법적으로 사용됩니다. - 공통 템플릿 테이블입니다. 참조 비교 방법에 의해 공통 템플릿 테이블의 특정 변경이 사용됩니다. 공통 템플릿 테이블은 ISO/IEC 10646:2020에 포함된 Unicode 13.0 표준의 모든 문자에 대한 순서를 설명합니다. 이 테이블은 완전히 결정적인 순서의 명세를 가능하게 합니다. 이 테이블을 사용하여 로컬 정렬 규칙에 적합한 문자열 정렬의 명세를 할 수 있으며, UCS에 이미 인코딩된 모든 다른 스크립트에 대한 지식을 갖지 않아도 됩니다. 참고 1: 이 공통 템플릿 테이블은 로컬 환경의 요구에 맞게 수정되어야 합니다. 전세계적인 혜택은 다른 스크립트의 경우, 일반적으로 수정이 필요하지 않고 순서가 최대한 일관되고 국제적인 관점에서 예측할 수 있게 될 것입니다. 참고 2: 본 문서에서 사용하는 문자 레퍼토리는 Unicode 표준 버전 13.0과 동일합니다. - 참조 이름입니다. 참조 이름은 공통 템플릿 테이블의 특정 버전을 가리키며, 해당 테이블이 ISO/IEC 10646 Universal coded character set의 특정 단계에 연결되어 있다는 것을 의미합니다. 본 문서는 다음을 명령하지 않습니다. - 특정 비교 방법; 동일한 결과를 제공하는 동등한 방법이 가능합니다. - 특정 형식으로 표현하거나 특정 환경에서의 테이블 수정. - 구현 시 사용되는 특정 기호, 공통 템플릿 테이블의 이름을 제외하고는 명령하지 않습니다. - 선택 옵션을 선택하기 위한 특정 사용자 인터페이스. - 비교할 때 사용되는 중간 키의 특정 내부 형식 또는 테이블에 대한 특정 내부 형식. 숫자 키의 사용도 명령하지 않습니다. - 문맥에 따른 순서. - 비교 전에 문자열을 비교하기 위한 특정 준비. 참고 1: 본 문서에서 지시하지 않아도 문자열 준비를 위한 준비가 필요한 경우가 일반적입니다 (부록 C 참조). 참고 2: 부록 D는 이 국제 표준을 준비해 온 문제 및 예상되는 해결책에 대해 설명합니다.














Questions, Comments and Discussion
Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.
Loading comments...