Aller au contenu principal

7. Strings (Chaînes)

La représentation des chaînes est similaire aux conventions utilisées dans la famille de langages de programmation C. Une chaîne commence et se termine par des guillemets. Tous les caractères Unicode peuvent être placés entre guillemets, à l'exception des caractères qui doivent être échappés: guillemets, barre oblique inverse et caractères de contrôle (U+0000 à U+001F).

Tout caractère peut être échappé. Si le caractère se trouve dans le plan multilingue de base (BMP) (U+0000 à U+FFFF), il peut être représenté sous forme de séquence de six caractères: une barre oblique inverse, suivie de la lettre minuscule u, suivie de quatre chiffres hexadécimaux encodant le point de code du caractère. Les lettres hexadécimales A à F peuvent être en majuscules ou en minuscules. Ainsi, par exemple, une chaîne ne contenant qu'un seul caractère barre oblique inverse peut être représentée comme "\u005C".

Alternativement, il existe des représentations d'échappement en séquence de deux caractères pour certains caractères couramment utilisés. Ainsi, par exemple, une chaîne ne contenant qu'un seul caractère barre oblique inverse peut être représentée de manière plus compacte comme "\\"".

Pour échapper un caractère étendu qui n'est pas dans le plan multilingue de base, le caractère est représenté comme une séquence de 12 caractères, encodant une paire de substitution UTF-16. Ainsi, par exemple, une chaîne ne contenant que le caractère clé de sol (U+1D11E) peut être représentée comme "\uD834\uDD1E".

string = quotation-mark *char quotation-mark

char = unescaped /
escape (
%x22 / ; " Guillemets U+0022
%x5C / ; \ Barre oblique inv. U+005C
%x2F / ; / Barre oblique U+002F
%x62 / ; b Retour arrière U+0008
%x66 / ; f Saut de page U+000C
%x6E / ; n Saut de ligne U+000A
%x72 / ; r Retour chariot U+000D
%x74 / ; t Tabulation U+0009
%x75 4HEXDIG ) ; uXXXX U+XXXX

escape = %x5C ; \

quotation-mark = %x22 ; "

unescaped = %x20-21 / %x23-5B / %x5D-10FFFF