Подтвердить что ты не робот

Терминатор строк UTF-16

Что такое последовательность терминаторов строк для строки UTF-16?

EDIT:

Позвольте мне перефразировать этот вопрос в попытке прояснить. Как работает вызов wcslen()?

4b9b3361

Ответ 1

Unicode не определяет терминаторы строки. Ваша среда или язык делает. Например, строки C используют 0x0 в качестве ограничителя строки, а также в строках .NET, где для хранения длины строки используется отдельное значение в классе String.

Чтобы ответить на ваш второй вопрос, wcslen ищет завершающий символ L'\0'. Как я понимаю, это любая длина 0x00 байт, в зависимости от компилятора, но, скорее всего, это будет двухбайтовая последовательность 0x00 0x00 если вы используете UTF-16 (кодировка U + 0000, 'NUL')

Ответ 2

7.24.4.6.1 Функция wcslen (из Стандарта)

...

   [#3]   The  wcslen  function  returns  the  number  of  wide
   characters that precede the terminating null wide character.

И широкий нулевой символ L'\0'

Ответ 3

Нет. Строковые терминаторы не являются частью кодировки.

Например, если у вас была строка ab, она была бы закодирована в UTF-16 со следующей последовательностью байтов: 61 00 62 00. И если у вас 大家, вы получите 27-59-B6-5B. Так как вы не видите предопределенной последовательности терминатора.