Vous êtes dans un nouveau chapitre. Traduit directement depuis la dernière version en date de la documentation officielle de Swift 2.

L’Unicode est un standard internationnal de l’encodage dans différents systèmes d’écriture. Il vous autorise à utiliser pratiquement tous les caractères depuis n’importe quelle langue dans une forme standardisée, et à lire et écrire ces caractères, pour et depuis, une source externe, comme un fichier texte ou une page web.

Les chaînes et les caractères en Swift sont totalement comformes avec l’Unicode, comme nous allons le voir dans cette section.

Les valeurs scalaires en Unicode

Dans les rouages du langage, le type String natif de Swift a été construit depuis les valeurs de l’Unicode scalaire. Un scalaire Unicode est un nombre unique écrit en 21-bits et qui correspond à un seul caractère à la fois, comme par exemple U+0061 pour LATIN MINUSCULE A (“a”), ou U+1F425 pour POUSSIN DE FACE (“🐥”).

Note : Les scalaires Unicode sont compris entre U+0000 et U+D7FF inclus ou U+E000 et U+10FFFF inclus. Ils ne sont en revanche pas inclus entre U+D800 et U+DFFF inclus.

Notez que tout les scalaires Unicode 21-bits n’ont pas forcément de caractères assignés, et certains sont réservés pour de futurs assignements. Les scalaires qui ont été assignés à un caractère on aussi un nom comme dans l’exemple vu ci-dessus.

Les caractères spéciaux dans les chaînes

Les chaînes de caractères peuvent inclure les caractères spéciaux suivants :

  • Les caractères d’échappement spéciaux \0 (caractère vide), \\ (anti-slash), \t (tabulation horizontale), \n (retour à la ligne), \r (retour chariot), \" (guillemet double), \' (guillemet simple)
  • Un scalaire Unicode arbitraire, écrit \u{n}, où n est un nombre hexadecimal composé de 1 à 8 chiffres avec une valeur Unicode valide.

Le code ci-dessous montre 4 exemples avec ce type de caractères spéciaux. La constante citation contient deux caractères d’échappement afin d’y inclure des guillemets doubles. Les trois constantes suivantes intègrent un scalaire au format Unicode :

1 let citation = "\" L'imagination est plus importante que la connaissance\" - Einstein"
2 // "L'imagination est plus importante que la connaissance" - Einstein
3 let symboleDollar = "\u{24}"
4 // $, scalaire Unicode U+0024
5 let coeurNoir = "\u{2665}"
6 // ♥, scalaire Unicode U+2665
7 let simleyCoeur = "\u{1F496}"
8 // 💖, scalaire Unicode U+1F496

Les combinaisons Unicode

Dans Swift, chaque caractère représente une combinaison Unicode unique. Les combinaisons Unicode sont des séquences d’un ou plusieurs scalaire(s) Unicode, qui, lorsqu’ils sont combinés forment un caractère lisible pour l’homme.

Voici un exemple. La lettre é est représentée par le scalaire Unicode é (LATIN MINUSCULE E AVEC ACCENT, ou U+00E9). Cependant la même lettre peut aussi être représentée avec une paire de scalaires : la lettre standard e (LATIN MINUSCULE E, ou U+0065), suivie de l’accent (U+0301). La combinaison est graphiquement appliquée au scalaire précédent, faisant ainsi de notre e standard un é avec accent, lorsque le rendu système est appliqué.

Dans les deux cas, la lettre é est représentée comme une valeur unique de type Character, c’est à dire une combinaison Unicode. Dans le premier cas, la combinaison ne contient qu’un seul scalaire; dans le second cas, la combinaison en contient deux :

1 let eAccent: Character = "\u{E9}"
2 // é
3 let eCombinaison: Character = "\u{65}\u{301}"
4 // e suivi de ´
5 // eAccent vaut é, eCombinaison vaut aussi é

Les combinaisons Unicode sont une façon plus flexible de représenter tout un tas de caractères complexes sans déborder de la valeur Character. Par exemple, les syllables de l’alphabet Coréen peuvent être représentée de plusieurs séquences recomposées ou décomposées. Dans les cas, ces représentations n’occuperont en mémoire que la place d’un seul caractère avec le langage Swift :

1 let reCompose: Character = "\u{D55C}"
2 // 한
3 let deCompose: Character = "\u{1112}\u{1161}\u{11AB}"
4 // ᄒ, ᅡ, ᆫ

Il est possible de créer vos propres combinaisons Unicode avec certains scalaires (comme par exemple le CERCLE D'ENTOURAGE COMBINÉ, ou U+20DD), pour obtenir une nouvelle valeur de type Character :

1 let eAccentCercle: Character = "\u{E9}\u{20DD}"
2 // eAccentCercle vaut maintenant ⃝ é

Les scalaires Unicode pour les indicateurs régionaux sont la combinaison d’une paire de deux valeurs simples de type Character, comme la combinaison de SYMBOL INDICATEUR REGIONNAL U (U+1F1FA) et SYMBOL INDICATEUR REGIONNAL S (U+1F1F8) :

1 let regionnalUS: Character = "\u{1F1FA}\u{1F1F8}"
2 // e suivi de ´
3 // regionnalUS vaut maintenant 🇺🇸