Aller au contenu principal

7. Strings (Chaînes de caractères)

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

N'importe quel caractère peut être échappé. Si le caractère est dans le plan multilingue de base (Basic Multilingual Plane, BMP) (U+0000 à U+FFFF), alors il peut être représenté comme une séquence de six caractères : une barre oblique inverse, suivie de la lettre minuscule u, suivie de quatre chiffres hexadécimaux qui encodent 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 contenant uniquement 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 populaires. Ainsi, par exemple, une chaîne contenant uniquement un seul caractère barre oblique inverse peut être représentée plus compactement 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 la paire de substitution UTF-16 (Surrogate Pair). Ainsi, par exemple, une chaîne contenant uniquement 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 / ; " quotation mark U+0022
%x5C / ; \ reverse solidus U+005C
%x2F / ; / solidus U+002F
%x62 / ; b backspace U+0008
%x66 / ; f form feed U+000C
%x6E / ; n line feed U+000A
%x72 / ; r carriage return U+000D
%x74 / ; t tab U+0009
%x75 4HEXDIG ) ; uXXXX U+XXXX

escape = %x5C ; \
quotation-mark = %x22 ; "
unescaped = %x20-21 / %x23-5B / %x5D-10FFFF