Quelle est la séquence de terminaison de chaîne pour une chaîne UTF-16?
MODIFIER:
Permettez-moi de reformuler la question pour tenter de clarifier. Comment fonctionne l’appel à wcslen()
?
Unicode ne définit pas les terminateurs de chaîne. Votre environnement ou votre langue le fait. Par exemple, les chaînes C utilisent 0x0 comme terminateur de chaîne, les langages .NET n’utilisant pas de terminateur de chaîne: ils définissent une valeur distincte dans la classe Ssortingng
pour stocker la longueur de la chaîne.
Pour répondre à votre deuxième question, wcslen
recherche un caractère L'\0'
wcslen
. Ce que je lis , est une longueur de 0x00
octets, selon le compilateur, mais sera probablement la séquence de deux octets 0x00
0x00
si vous utilisez UTF-16 (codage U + 0000, ‘NUL’ )
Il n’y en a pas. Les terminateurs de chaîne ne font pas partie d’un encodage.
Par exemple, si vous aviez la chaîne ab
elle serait codée en UTF-16 avec la séquence d’octets suivante: 61 00 62 00
. Et si vous aviez 大家
vous auriez 27-59-B6-5B
. Donc, comme vous pouvez voir aucune séquence de terminateur prédéterminée.
7.24.4.6.1 La fonction wcslen (de la norme )
…
[#3] The wcslen function returns the number of wide characters that precede the terminating null wide character.
Et le caractère large nul est L'\0'