Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
RtlUnicodeStringToUTF8String преобразует указанную строку Юникода в строку UTF-8.
Синтаксис
NTSYSAPI NTSTATUS RtlUnicodeStringToUTF8String(
PUTF8_STRING DestinationString,
PCUNICODE_STRING SourceString,
BOOLEAN AllocateDestinationString
);
Параметры
DestinationString
Указатель на буфер, в котором помещается преобразованная строка UTF-8. Поле "DestinationString->MaximumLength задано только в том случае, если AllocateDestinationString имеет значение TRUE.
SourceString
Указатель на строку Юникода, которая будет преобразована в UTF-8.
AllocateDestinationString
Логическое значение. Если задано значение TRUE, RtlUnicodeStringToUTF8String выделяет буферное пространство для конечной строки. В этом API выделяется только хранилище для DestinationString->буфера. Если RtlUnicodeStringToUTF8String выделяет буфер, вызывающий объект должен освободить буфер с помощью RtlFreeUTF8String.
Возвращаемое значение
Эта функция возвращает STATUS_SUCCESS при успешном преобразовании. Возможные коды ошибок или предупреждений:
| Код | Описание |
|---|---|
| STATUS_INVALID_PARAMETERX | Ошибка: одно из значений параметров недопустимо. |
| STATUS_NO_MEMORY | Ошибка: RtlUnicodeStringToUTF8String не удалось выделить буферное пространство. |
| STATUS_BUFFER_OVERFLOW | Предупреждение. Преобразованная строка в DestinationString->буфера усечена из-за нехватки места в буфере назначения. |
| STATUS_SOME_NOT_MAPPED | Предупреждение. Вызов выполнен успешно, но один или несколько входных символов были недопустимыми и были заменены символом замены Юникода U+FFFD, прежде чем преобразовывать его в UTF-8. |
Замечания
Выходная строка UTF-8 завершается null, только если входная строка Юникода завершается null.
RtlUnicodeStringToUTF8String поддерживает суррогатные пары Юникода. Однако суррогатное начальное значение слова, за которым не следует конечная буква слова, или значение слова, которое не предшествует значению ведущего слова, не распознается как допустимый код символа и заменяется символом замены Юникода U+FFFD.
RtlUnicodeStringToUTF8String продолжает преобразовывать входную строку в выходную строку, пока она не достигнет конца исходного буфера или конца конечного буфера. Подпрограмма преобразует все пустые символы в входной строке в символы NULL в выходной строке. Если входная строка содержит завершающий символ NULL, но пустой символ не находится в конце исходного буфера, подпрограмма продолжается до конца конца пустого символа, пока не достигнет конца доступного буферного пространства.
Подпрограмма RtlUTF8StringToUnicodeString преобразует строку UTF-8 в строку Юникода.
Вы можете использовать RtlUnicodeStringToUTF8String и подпрограммы RtlUTF8StringToUnicodeString для выполнения безвозмездного преобразования допустимых текстовых строк между форматами Юникода и UTF-8. Однако строки с произвольными значениями данных, скорее всего, нарушают правила Юникода для кодирования суррогатных пар, и все сведения, содержащиеся в недопустимых значениях входной строки, теряются и не могут быть восстановлены из результирующей выходной строки.
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Windows 10 версии 2004 |
| заголовка | ntifs.h |