• [^] # Re: Survivor

    Posté par . En réponse au journal C, un âge remarquable. Évalué à 5.

    Je suis d’accord, la normalisation a rien à faire dans un langage de programmation, c’est pour ça qu’elle est définie au niveau d’unicode lui même.
    Swift se contente d’implémenter la spec.

    https://unicode.org/reports/tr15/

    ce qui oblige à connaître l’encodage du texte comparé, ce que le == n’indique pas du tout — nécessairement il admet implicitement un encodage, mais lequel ?

    Comment diable veut tu espérer comparer des chaînes si tu ne connais pas leur encodage? En l’occurrence, l’encodage est capturé à la source, quand tu construit la chaîne.

    Les opérations d’égalité et autres manipulations se font ensuite de normalisée, vu que tout le monde est sur le même pied, via String. Tu peux recevoir une chaîne en UTF8, une autre en utf32 et une troisième en iso 8859-15, et les concatener ensemble, String sait comment faire vu que string connaît et comprend chacun des encodages. Ta chaîne sera correcte sémantiquement et techniquement, au niveau du buffer qui back la struct.

    L’égalité par défaut va marcher au niveau sémantique, si tu veux comparer les char *, tu peux aussi, cf le code au dessus.