Comment définissez-vous des chaînes de caractères majuscules / minuscules dans Unicode?

C'est surtout une question théorique, je suis juste très curieux. (Je ne suis pas en train de ce faire par le codage de moi-même ou quoi que ce soit, je ne suis pas réinventer la roue.)

Ma question est de savoir comment les majuscules/minuscules tableau d'équivalence des œuvres pour l'Unicode.

Par exemple, si j'avais à le faire en ASCII, je voudrais prendre un personnage, et si elle tombe dans les [a-z], j'aurais de la somme, la différence entre Un et un.

Si ça ne tombe pas sur cette gamme, j'aurais un petit tableau d'équivalence pour les 10 ou si les caractères accentués en plus -.
(Ou, je pourrais juste avoir une équivalence complète de la matrice de 256 entrées, la plupart de ce qui serait le même que l'entrée)

Cependant, j'imagine qu'il y a une meilleure façon de spécifier les équivalences en Unicode, étant donné qu'il y a des centaines de milliers de caractères, et que, théoriquement, une nouvelle langue ou un ensemble de caractères peut être ajouté (et je m'attends à ce que vous n'avez pas besoin de patch windows quand ça arrive).

Windows ont un énorme codée en dur de l'équivalence de la table pour chaque personnage? Ou comment cela est-il mis en œuvre?

Une question connexe est de savoir comment SQL Server implémente basé sur Unicode accents et de la casse des requêtes. A-t-elle une table interne qui lui dit que é ë è E É È et Ë sont tous équivalent à "e"?

Qui ne sonne pas très rapide quand il s'agit de comparer des chaînes de caractères.

Comment est-il accès Indices rapidement? Est-il déjà valeurs de l'indice de convertis à leur "base", les caractères, correspondant au champ du classement?

Personne ne sait le fonctionnement interne de ces choses?

Merci!

Je pense que vous auriez besoin de patch windows si ils ont ajouté un nouveau jeu de caractères unicode, mais que ce serait une très faible priorité patch, car d'abord que personne ne soit à l'aide de ces caractères.
"un petit tableau d'équivalence pour les 10 ou si les caractères accentués plus -" -- vous aurez à comprendre que les "petits" qui signifie qu'environ 100 fois plus grand que tu le pensais.
Je ne suis pas entièrement sûr que je comprends pourquoi toutes les variantes de e que je ne peut pas taper avec mon clavier facilement tous égaux "e". Je peux le comprendre, à partir d'une base de données de point de vue (pour la recherche en ignorant des accents particuliers), mais d'un point de vue de la langue que ceux sont tous des caractères différents...
pourquoi vous parlez toujours de "windows ...", lorsque votre question est théorique? si vous voulez un bon algorithme, ne pas exect quelque part dans certains OS, mais la recherche d'une bibliothèque unicode ou tout simplement pour l'algorithme. désolé, mais cette question sonne un peu comme "je sais que windows ne les choses, donc il faut le faire"...

OriginalL'auteur Daniel Magliola | 2008-11-18