Texte et outils quotidiens · Boîte à outils de texte
Pourquoi les listes triées diffèrent entre les ordinateurs : explication du tri tenant compte des paramètres régionaux
· Pourquoi c'est important
outils de texte tri paramètres régionaux Localisation
Explique la différence entre l'ordre des points de code et le classement des paramètres régionaux, pourquoi les lettres ä, é et majuscules atterrissent à différents endroits sur différentes machines et comment partager une liste triée sans surprises.
La même liste, deux ordres : le tri d'un collègue place Ångström ailleurs, et aucun de vous n'a tort.
Un chef d'équipe peut envoyer la même liste de noms de participants à des collègues de deux pays et recevoir deux ordres alphabétiques plausibles. Les noms contenant des lettres accentuées sont le point de désaccord habituel, car le placement alphabétique n'est pas déterminé par la seule lettre de base visible. L'environnement du navigateur participe à la comparaison.
Aucun des deux collègues n'a besoin d'avoir commis une erreur manuelle. Le problème pratique est que le « tri alphabétique » n’identifie pas une séquence universelle pour un texte multilingue. Avant d'examiner les ajouts ou les suppressions, convenez quelle commande complétée fait autorité ; sinon, une comparaison ligne par ligne montrera le mouvement provoqué uniquement par des décisions de tri distinctes.
Ordre des points de code : pourquoi un tri naïf place chaque majuscule avant chaque lettre minuscule et pousse les lettres accentuées jusqu'à la fin
Le plan décrit un tri naïf par points de code qui place les majuscules avant les lettres minuscules et les lettres accentuées à la fin, mais ce n'est pas ce que Text Toolkit implémente. Sa fonction `sortLines` copie les lignes et compare chaque paire avec `localeCompare`, de sorte que les règles de classement du navigateur sont consultées plutôt que les nombres de caractères bruts.
La gestion des cas est également explicite dans les options de fonction. Le tri sensible à la casse demande une sensibilité `variant`, tandis que le mode insensible à la casse par défaut demande une sensibilité `base`. Cela peut rendre équivalents les formulaires avec des casses ou des accents différents, laissant leur placement relatif dépendant de l'ordre stable fourni au trieur plutôt que de forcer les majuscules dans un bloc séparé.
ToolAcre n'utilise pas d'ordre naïf des points de code : il appelle localeCompare pour chaque ligne
La comparaison transmet `undefined` comme paramètres régionaux, ce qui demande au moteur d'exécution d'utiliser son comportement de paramètres régionaux par défaut. La source ne promet pas le suédois, l'allemand, l'anglais ou tout autre classement nommé, et l'interface représentée par cette fonction n'a aucun argument de paramètres régionaux. Publier ici des ordonnances nationales exactes irait donc au-delà des preuves de mise en œuvre.
Cette limite explique pourquoi les résultats peuvent différer sans prouver exactement quel paramètre a provoqué une différence particulière. Enregistrez le navigateur et l'environnement lorsque la reproductibilité est importante, mais ne déduisez pas de paramètres régionaux à partir de la position d'un nom accentué. Le fait fiable est que la boîte à outils délègue la commande à `localeCompare` avec la valeur par défaut d'exécution plutôt que d'épingler un langage partagé.
Le navigateur fournit les paramètres régionaux par défaut, mais la boîte à outils ne propose aucun sélecteur de paramètres régionaux
Les séries de chiffres bénéficient également d'un traitement spécial. La fonction définit par défaut `numeric` sur true et transmet cette option à `localeCompare`. Par conséquent, une liste contenant `item2` et `item10` est destinée à placer le plus petit chiffre en premier dans l'ordre croissant au lieu de comparer le caractère `1` sur dix avec le caractère `2` sur deux.
Le remplissage par zéro reste utile lorsque les données doivent passer par un autre trieur dont le comportement est inconnu, mais il n'est pas requis pour obtenir ici un classement numérique. Si un ordre lexical exact est souhaité, la fonction sous-jacente prend en charge la désactivation de la comparaison numérique. La leçon importante est de documenter l'option choisie plutôt que de supposer que chaque commande alphabétique traite les chiffres incorporés de la même manière.
Les séries de chiffres sont triées numériquement par défaut, donc l'élément 2 précède l'élément 10.
Pour un exemple révisable, placez `Ångström`, `Ana`, `Émile`, `item2` et `item10` sur des lignes distinctes, puis triez une fois dans le navigateur choisi par l'équipe. Enregistrez cette sortie comme référence. Cet article ne publie délibérément pas l'ordre des noms accentués attendu par un deuxième navigateur, car le référentiel ne contient aucun élément de paramètres régionaux épinglés l'établissant.
Si un collègue a une autre commande, comparez les deux textes complétés avec la différence par ligne. L'implémentation diff aligne des lignes exactement égales via une table de sous-séquence commune la plus longue et étiquette les lignes sans correspondance comme étant ajoutées ou supprimées. Il rend compte fidèlement du mouvement structurel, mais il n'explique pas quelle comparaison locale a placé un nom à l'une ou l'autre position.
Exemple concret : comparer une commande produite par le navigateur au lieu d'inventer deux résultats régionaux
La règle de collaboration la plus simple consiste à trier une fois et à partager les lignes résultantes, et pas seulement l'entrée non triée plus une instruction pour appuyer sur Trier. Un résultat en texte brut préserve la décision qui a été réellement examinée. Les destinataires peuvent rechercher, annoter ou comparer cet artefact sans demander à leur propre navigateur de recréer un classement dépendant de l'environnement.
Conservez également la liste originale lorsque la provenance est importante. La copie triée est une présentation pour examen, tandis que l'original peut contenir un ordre d'arrivée ou d'origine significatif. Nommer le fichier de référence et enregistrer si le tri était ascendant, sensible à la casse et numérique transforme une vague opération alphabétique en un transfert d'équipe reproductible.
Ce que cela ne couvre pas : options de tri numérique, ordre inverse et tri par colonne spécifique
Le plan original indique que les options de tri numérique et l'ordre inverse ne sont pas couverts, mais la source contredit cette limitation. `sortLines` accepte une option numérique et une direction ascendante ou descendante, tandis que `reverseLines` peut inverser la séquence de ligne actuelle. Ces capacités ne doivent pas être décrites comme absentes de la logique textuelle de la boîte à outils.
Le tri par colonne spécifique est véritablement en dehors de cette fonction. Chaque ligne complète est la valeur de comparaison, donc une ligne telle que `Paris, Ana` est triée à partir de son début plutôt que par son nom après la virgule. Analyser les lignes structurées avec un outil de données approprié lorsque les champs sont importants ; le tri des lignes ne doit pas prétendre comprendre les colonnes.
La boîte à outils couvre le tri numérique et l'ordre inverse, mais pas le tri par colonne
Le tri tenant compte des paramètres régionaux est utile car les alphabets humains ne peuvent pas être réduits en toute sécurité à une seule règle brute de nombre de caractères. Cela signifie également qu'un paramètre régional par défaut non épinglé n'est pas un contrat de reproductibilité entre machines. Text Toolkit utilise le classement du navigateur, effectue par défaut des comparaisons insensibles à la casse et tenant compte des chiffres, et peut inverser la direction demandée.
Pour une équipe couvrant plusieurs environnements, faites du résultat le contrat : choisissez une session de navigateur, définissez les options souhaitées, triez et distribuez ce texte exact. Lorsqu'un autre ordre apparaît, comparez les artefacts avant de débattre de l'alphabet correct. La source permet d'expliquer le mécanisme, tandis que le résultat enregistré fournit la séquence stable que l'implémentation elle-même ne garantit pas globalement.